components/bash/patches/solaris-019.eaccess.c.patch
author Craig Mohrman <craig.mohrman@oracle.com>
Mon, 17 Nov 2014 14:15:50 -0800
changeset 2211 a99bbd5139c0
parent 1082 6d49548fa9da
child 5518 c47fe0edc204
permissions -rw-r--r--
19978720 php manual patches need adjusting after new gpatch introduced
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1082
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     1
--- lib/sh/eaccess.c	2012-10-09 12:45:17.924274300 -0700
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     2
+++ lib/sh/eaccess.c	2012-10-09 12:44:21.930979200 -0700
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     3
@@ -40,6 +40,10 @@
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     4
 #if !defined (_POSIX_VERSION) && defined (HAVE_SYS_FILE_H)
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     5
 #  include <sys/file.h>
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     6
 #endif /* !_POSIX_VERSION */
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     7
+
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     8
+#include <string.h> /* memset(3C) */
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
     9
+#include <limits.h> /* _XOPEN_PATH_MAX */
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    10
+
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    11
 #include "posixstat.h"
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    12
 #include "filecntl.h"
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    13
 
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    14
@@ -82,7 +86,7 @@
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    15
      const char *path;
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    16
      struct stat *finfo;
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    17
 {
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    18
-  static char *pbuf = 0;
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    19
+  static char pbuf[_XOPEN_PATH_MAX + 1];
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    20
 
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    21
   if (*path == '\0')
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    22
     {
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    23
@@ -108,9 +112,11 @@
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    24
      trailing slash.  Make sure /dev/fd/xx really uses DEV_FD_PREFIX/xx.
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    25
      On most systems, with the notable exception of linux, this is
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    26
      effectively a no-op. */
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    27
-      pbuf = xrealloc (pbuf, sizeof (DEV_FD_PREFIX) + strlen (path + 8));
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    28
+  /* The way CVE-2012-3410 was fixed is wrong */
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    29
+      (void) memset (pbuf, '\0', sizeof(pbuf));
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    30
       strcpy (pbuf, DEV_FD_PREFIX);
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    31
-      strcat (pbuf, path + 8);
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    32
+      strncat (pbuf, path + 8,
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    33
+          (size_t) (sizeof(pbuf) - sizeof(DEV_FD_PREFIX)));
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    34
       return (stat (pbuf, finfo));
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    35
 #endif /* !HAVE_DEV_FD */
6d49548fa9da 15754923 SUNBT7111705 Upgrade bash to 4.2
Stefan Teleman <stefan.teleman@oracle.com>
parents:
diff changeset
    36
     }