app-shells/bash: backport /dev/fd fix to older versions #431850
authorMike Frysinger <vapier@gentoo.org>
Tue, 20 Oct 2015 20:34:01 +0000 (16:34 -0400)
committerMike Frysinger <vapier@gentoo.org>
Tue, 20 Oct 2015 20:34:46 +0000 (16:34 -0400)
app-shells/bash/bash-2.05b_p13.ebuild
app-shells/bash/bash-3.0_p22.ebuild
app-shells/bash/bash-3.1_p23.ebuild
app-shells/bash/bash-3.2_p57.ebuild
app-shells/bash/bash-4.0_p44.ebuild
app-shells/bash/bash-4.1_p17.ebuild
app-shells/bash/files/bash-3.1-dev-fd-buffer-overflow.patch [new file with mode: 0644]
app-shells/bash/files/bash-4.2-dev-fd-buffer-overflow.patch [new file with mode: 0644]

index 7e69f0f1e75ebaad17bb1ac3e188b5c3fe19d12c..56d5bcd6c655c861452be37a0a7520129c2e0d28 100644 (file)
@@ -73,6 +73,7 @@ src_prepare() {
        epatch "${FILESDIR}"/${PN}-2.05b-parallel-build.patch #41002
        epatch "${FILESDIR}"/${PN}-2.05b-jobs.patch
        epatch "${FILESDIR}"/${PN}-2.05b-fix-job-warning.patch
+       epatch "${FILESDIR}"/${PN}-3.1-dev-fd-buffer-overflow.patch #431850
 
        epatch_user
 }
index b8d8fe7284c4cc45e31d885be9d2ec7d2237b9ef..33a50c8c1bed48d67c73273be00afeb6af3a8735 100644 (file)
@@ -81,6 +81,7 @@ src_prepare() {
        epatch "${FILESDIR}"/${PN}-3.0-trap-fg-signals.patch
        epatch "${FILESDIR}"/${PN}-3.0-pgrp-pipe-fix.patch #92349
        epatch "${FILESDIR}"/${PN}-3.0-strnlen.patch
+       epatch "${FILESDIR}"/${PN}-3.1-dev-fd-buffer-overflow.patch #431850
 
        epatch_user
 }
index 95ef23b64f9a6c351190093a92c40244a00e4678..d984d0d0575a3483aec9c3fcb5620825aaf2c174 100644 (file)
@@ -73,6 +73,7 @@ src_prepare() {
        epatch "${FILESDIR}"/${PN}-3.0-trap-fg-signals.patch
        epatch "${FILESDIR}"/${PN}-3.1-fix-dash-login-shell.patch #118257
        epatch "${FILESDIR}"/${PN}-3.1-dev-fd-test-as-user.patch #131875
+       epatch "${FILESDIR}"/${PN}-3.1-dev-fd-buffer-overflow.patch #431850
 
        epatch_user
 }
index 1d373c7d321e807e5a7e8d84cc254a36956efa47..511e7b22cdf6966d272cccd7208fd318cdbaebf5 100644 (file)
@@ -75,6 +75,7 @@ src_prepare() {
        epatch "${FILESDIR}"/${PN}-3.2-ulimit.patch
        epatch "${FILESDIR}"/${PN}-3.0-trap-fg-signals.patch
        epatch "${FILESDIR}"/${PN}-3.2-dev-fd-test-as-user.patch #131875
+       epatch "${FILESDIR}"/${PN}-4.2-dev-fd-buffer-overflow.patch #431850
 
        epatch_user
 }
index 543ea45b61243aa6fdc9d1074984244ed7053463..2d8a80e01941fa89a4a09c923de7a42735989451 100644 (file)
@@ -72,6 +72,7 @@ src_prepare() {
        epatch "${FILESDIR}"/${PN}-4.0-ldflags-for-build.patch #211947
        epatch "${FILESDIR}"/${PN}-4.0-negative-return.patch
        epatch "${FILESDIR}"/${PN}-4.0-parallel-build.patch #267613
+       epatch "${FILESDIR}"/${PN}-4.2-dev-fd-buffer-overflow.patch #431850
        sed -i '/\.o: .*shell\.h/s:$: pathnames.h:' Makefile.in #267613
 
        epatch_user
index 3bc12cbf36af3a9d285aa857783f82be816ba11c..ad19cf367709cb5a7f95f384bfd210b2dc00048e 100644 (file)
@@ -68,6 +68,7 @@ src_prepare() {
        epatch "${FILESDIR}"/${PN}-4.1-fbsd-eaccess.patch #303411
        sed -i '1i#define NEED_FPURGE_DECL' execute_cmd.c # needs fpurge() decl
        epatch "${FILESDIR}"/${PN}-4.1-parallel-build.patch
+       epatch "${FILESDIR}"/${PN}-4.2-dev-fd-buffer-overflow.patch #431850
 
        epatch_user
 }
diff --git a/app-shells/bash/files/bash-3.1-dev-fd-buffer-overflow.patch b/app-shells/bash/files/bash-3.1-dev-fd-buffer-overflow.patch
new file mode 100644 (file)
index 0000000..9d08856
--- /dev/null
@@ -0,0 +1,16 @@
+https://bugs.gentoo.org/431850
+
+this is a backport of the upstream bash42-033 patch for bash 3.1/3.0/2.05
+
+--- a/test.c
++++ b/test.c
+@@ -194,7 +194,8 @@
+      trailing slash.  Make sure /dev/fd/xx really uses DEV_FD_PREFIX/xx.
+      On most systems, with the notable exception of linux, this is
+      effectively a no-op. */
+-      char pbuf[32];
++      static char *pbuf = 0;
++      pbuf = xrealloc (pbuf, sizeof (DEV_FD_PREFIX) + strlen (path + 8));
+       strcpy (pbuf, DEV_FD_PREFIX);
+       strcat (pbuf, path + 8);
+       return (stat (pbuf, finfo));
diff --git a/app-shells/bash/files/bash-4.2-dev-fd-buffer-overflow.patch b/app-shells/bash/files/bash-4.2-dev-fd-buffer-overflow.patch
new file mode 100644 (file)
index 0000000..bef960a
--- /dev/null
@@ -0,0 +1,46 @@
+https://bugs.gentoo.org/431850
+
+this is a minor tweak to the upstream patch to also apply to bash 4.1/4.0/3.2
+
+                            BASH PATCH REPORT
+                            =================
+
+Bash-Release:  4.2
+Patch-ID:      bash42-033
+
+Bug-Reported-by:       David Leverton <levertond@googlemail.com>
+Bug-Reference-ID:      <4FCCE737.1060603@googlemail.com>
+Bug-Reference-URL:
+
+Bug-Description:
+
+Bash uses a static buffer when expanding the /dev/fd prefix for the test
+and conditional commands, among other uses, when it should use a dynamic
+buffer to avoid buffer overflow.
+
+Patch (apply with `patch -p0'):
+
+*** ../bash-4.2-patched/lib/sh/eaccess.c       2011-01-08 20:50:10.000000000 -0500
+--- lib/sh/eaccess.c   2012-06-04 21:06:43.000000000 -0400
+***************
+*** 83,86 ****
+--- 83,88 ----
+       struct stat *finfo;
+  {
++   static char *pbuf = 0;
++ 
+    if (*path == '\0')
+      {
+***************
+*** 107,111 ****
+       On most systems, with the notable exception of linux, this is
+       effectively a no-op. */
+!       char pbuf[32];
+        strcpy (pbuf, DEV_FD_PREFIX);
+        strcat (pbuf, path + 8);
+--- 109,113 ----
+       On most systems, with the notable exception of linux, this is
+       effectively a no-op. */
+!       pbuf = xrealloc (pbuf, sizeof (DEV_FD_PREFIX) + strlen (path + 8));
+        strcpy (pbuf, DEV_FD_PREFIX);
+        strcat (pbuf, path + 8);