public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Patrice Clement" <monsieurp@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: app-misc/screen/, app-misc/screen/files/
Date: Tue, 15 Sep 2015 23:25:11 +0000 (UTC)	[thread overview]
Message-ID: <1442359457.d2b61ecde95de8b30652d3d56973845c6ba41811.monsieurp@gentoo> (raw)

commit:     d2b61ecde95de8b30652d3d56973845c6ba41811
Author:     Patrice Clement <monsieurp <AT> gentoo <DOT> org>
AuthorDate: Tue Sep 15 23:14:26 2015 +0000
Commit:     Patrice Clement <monsieurp <AT> gentoo <DOT> org>
CommitDate: Tue Sep 15 23:24:17 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d2b61ecd

app-misc/screen: Patch sources to mitigate a stack overflow. Fixes security bug 559394.

Package-Manager: portage-2.2.18
Signed-off-by: Patrice Clement <monsieurp <AT> gentoo.org>

 app-misc/screen/files/screen-4.3.1-ansi.c.patch |  37 ++++++
 app-misc/screen/screen-4.3.1-r1.ebuild          | 154 ++++++++++++++++++++++++
 2 files changed, 191 insertions(+)

diff --git a/app-misc/screen/files/screen-4.3.1-ansi.c.patch b/app-misc/screen/files/screen-4.3.1-ansi.c.patch
new file mode 100644
index 0000000..8dca52d
--- /dev/null
+++ b/app-misc/screen/files/screen-4.3.1-ansi.c.patch
@@ -0,0 +1,37 @@
+--- ansi.c.orig	2015-09-15 22:55:48.274486000 +0000
++++ ansi.c	2015-09-15 22:59:14.368486000 +0000
+@@ -2502,13 +2502,13 @@
+     return;
+   if (n > 0)
+     {
++      if (ye - ys + 1 < n)
++	n = ye - ys + 1;
+       if (n > 256)
+ 	{
+ 	  MScrollV(p, n - 256, ys, ye, bce);
+ 	  n = 256;
+ 	}
+-      if (ye - ys + 1 < n)
+-	n = ye - ys + 1;
+ #ifdef COPY_PASTE
+       if (compacthist)
+ 	{
+@@ -2562,15 +2562,14 @@
+     }
+   else
+     {
++      n = -n;
++      if (ye - ys + 1 < n)
++	n = ye - ys + 1;
+       if (n < -256)
+ 	{
+ 	  MScrollV(p, n + 256, ys, ye, bce);
+ 	  n = -256;
+ 	}
+-      n = -n;
+-      if (ye - ys + 1 < n)
+-	n = ye - ys + 1;
+-
+       ml = p->w_mlines + ye;
+       /* Clear lines */
+       for (i = ye; i > ye - n; i--, ml--)

diff --git a/app-misc/screen/screen-4.3.1-r1.ebuild b/app-misc/screen/screen-4.3.1-r1.ebuild
new file mode 100644
index 0000000..cb85936
--- /dev/null
+++ b/app-misc/screen/screen-4.3.1-r1.ebuild
@@ -0,0 +1,154 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit autotools eutils flag-o-matic pam toolchain-funcs user
+
+DESCRIPTION="Full-screen window manager that multiplexes physical terminals between several processes"
+HOMEPAGE="https://www.gnu.org/software/screen/"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd ~hppa-hpux ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="debug nethack pam selinux multiuser"
+
+CDEPEND="
+	>=sys-libs/ncurses-5.2:0=
+	pam? ( virtual/pam )"
+RDEPEND="${CDEPEND}
+	selinux? ( sec-policy/selinux-screen )"
+DEPEND="${CDEPEND}
+	sys-apps/texinfo"
+
+# Patches:
+# - Don't use utempter even if it is found on the system.
+# - Bug 559394.
+PATCHES=(
+	"${FILESDIR}"/${PN}-4.3.0-no-utempter.patch
+	"${FILESDIR}"/${PN}-4.3.1-ansi.c.patch
+)
+
+pkg_setup() {
+	# Make sure utmp group exists, as it's used later on.
+	enewgroup utmp 406
+}
+
+src_prepare() {
+	# Apply patches.
+	epatch "${PATCHES[@]}"
+
+	# sched.h is a system header and causes problems with some C libraries
+	mv sched.h _sched.h || die
+	sed -i '/include/ s:sched.h:_sched.h:' screen.h || die
+
+	# Fix manpage.
+	sed -i \
+		-e "s:/usr/local/etc/screenrc:${EPREFIX}/etc/screenrc:g" \
+		-e "s:/usr/local/screens:${EPREFIX}/tmp/screen:g" \
+		-e "s:/local/etc/screenrc:${EPREFIX}/etc/screenrc:g" \
+		-e "s:/etc/utmp:${EPREFIX}/var/run/utmp:g" \
+		-e "s:/local/screens/S-:${EPREFIX}/tmp/screen/S-:g" \
+		doc/screen.1 \
+		|| die
+
+	# reconfigure
+	eautoreconf
+}
+
+src_configure() {
+	append-cppflags "-DMAXWIN=${MAX_SCREEN_WINDOWS:-100}"
+
+	if [[ ${CHOST} == *-solaris* ]] ; then
+		# https://lists.gnu.org/archive/html/screen-devel/2014-04/msg00095.html
+		append-cppflags -D_XOPEN_SOURCE \
+			-D_XOPEN_SOURCE_EXTENDED=1 \
+			-D__EXTENSIONS__
+		append-libs -lsocket -lnsl
+	fi
+
+	use nethack || append-cppflags "-DNONETHACK"
+	use debug && append-cppflags "-DDEBUG"
+
+	econf \
+		--with-socket-dir="${EPREFIX}/tmp/screen" \
+		--with-sys-screenrc="${EPREFIX}/etc/screenrc" \
+		--with-pty-mode=0620 \
+		--with-pty-group=5 \
+		--enable-rxvt_osc \
+		--enable-telnet \
+		--enable-colors256 \
+		$(use_enable pam)
+}
+
+src_compile() {
+	LC_ALL=POSIX emake comm.h term.h
+	emake osdef.h
+
+	emake -C doc screen.info
+	default
+}
+
+src_install() {
+	local tmpfiles_perms tmpfiles_group
+
+	dobin screen
+
+	if use multiuser || use prefix
+	then
+		fperms 4755 /usr/bin/screen
+		tmpfiles_perms="0755"
+		tmpfiles_group="root"
+	else
+		fowners root:utmp /usr/bin/screen
+		fperms 2755 /usr/bin/screen
+		tmpfiles_perms="0775"
+		tmpfiles_group="utmp"
+	fi
+
+	dodir /etc/tmpfiles.d
+	echo "d /tmp/screen ${tmpfiles_perms} root ${tmpfiles_group}" \
+		> "${ED}"/etc/tmpfiles.d/screen.conf
+
+	insinto /usr/share/screen
+	doins terminfo/{screencap,screeninfo.src}
+	insinto /usr/share/screen/utf8encodings
+	doins utf8encodings/??
+	insinto /etc
+	doins "${FILESDIR}"/screenrc
+
+	pamd_mimic_system screen auth
+
+	dodoc \
+		README ChangeLog INSTALL TODO NEWS* patchlevel.h \
+		doc/{FAQ,README.DOTSCREEN,fdpat.ps,window_to_display.ps}
+
+	doman doc/screen.1
+	doinfo doc/screen.info
+}
+
+pkg_postinst() {
+	if [[ -z ${REPLACING_VERSIONS} ]]
+	then
+		elog "Some dangerous key bindings have been removed or changed to more safe values."
+		elog "We enable some xterm hacks in our default screenrc, which might break some"
+		elog "applications. Please check /etc/screenrc for information on these changes."
+	fi
+
+	# Add /tmp/screen in case it doesn't exist yet. This should solve
+	# problems like bug #508634 where tmpfiles.d isn't in effect.
+	local rundir="${EROOT%/}/tmp/screen"
+	if [[ ! -d ${rundir} ]] ; then
+		if use multiuser || use prefix ; then
+			tmpfiles_group="root"
+		else
+			tmpfiles_group="utmp"
+		fi
+		mkdir -m 0775 "${rundir}"
+		chgrp ${tmpfiles_group} "${rundir}"
+	fi
+
+	ewarn "This revision changes the screen socket location to ${rundir}"
+}


             reply	other threads:[~2015-09-15 23:25 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-15 23:25 Patrice Clement [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-10-10 15:38 [gentoo-commits] repo/gentoo:master commit in: app-misc/screen/, app-misc/screen/files/ Patrice Clement
2016-01-23 12:41 Jeroen Roovers
2017-01-20 11:54 Fabian Groffen
2017-02-26 12:16 Jeroen Roovers
2023-08-08  5:45 Sam James
2025-03-08 20:03 Sven Wegener

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1442359457.d2b61ecde95de8b30652d3d56973845c6ba41811.monsieurp@gentoo \
    --to=monsieurp@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox