summaryrefslogtreecommitdiffstats
path: root/SOURCES/bash-4.0.24-acl.dif
diff options
context:
space:
mode:
Diffstat (limited to 'SOURCES/bash-4.0.24-acl.dif')
-rw-r--r--SOURCES/bash-4.0.24-acl.dif61
1 files changed, 61 insertions, 0 deletions
diff --git a/SOURCES/bash-4.0.24-acl.dif b/SOURCES/bash-4.0.24-acl.dif
new file mode 100644
index 0000000..5e7e1ed
--- /dev/null
+++ b/SOURCES/bash-4.0.24-acl.dif
@@ -0,0 +1,61 @@
+Index: findcmd.c
+===================================================================
+--- findcmd.c.orig
++++ findcmd.c
+@@ -93,7 +93,22 @@ file_status (name)
+
+ r = FS_EXISTS;
+
+-#if defined (AFS)
++#if defined (HAVE_EACCESS) /* FreeBSD, GLIBC_2.4+ */
++
++ /* For support of ACL's use eaccess(3) if found e.g. glibc 2.4 and up:
++ * Like access(2), euidaccess(3) checks permissions and existence of the
++ * file identified by its argument pathname. However, whereas access(2),
++ * performs checks using the real user and group identifiers of the pro-
++ * cess, euidaccess(3) uses the effective identifiers.
++ * eaccess(3) is a synonym for euidaccess(3), provided for compatibility
++ * with some other systems. */
++ if (eaccess (name, X_OK) == 0)
++ r |= FS_EXECABLE;
++ if (eaccess (name, R_OK) == 0)
++ r |= FS_READABLE;
++
++#elif defined (AFS)
++
+ /* We have to use access(2) to determine access because AFS does not
+ support Unix file system semantics. This may produce wrong
+ answers for non-AFS files when ruid != euid. I hate AFS. */
+@@ -102,8 +117,7 @@ file_status (name)
+ if (access (name, R_OK) == 0)
+ r |= FS_READABLE;
+
+- return r;
+-#else /* !AFS */
++#else /* !AFS && !HAVE_EACCESS */
+
+ /* Find out if the file is actually executable. By definition, the
+ only other criteria is that the file has an execute bit set that
+@@ -146,8 +160,8 @@ file_status (name)
+ r |= FS_READABLE;
+ }
+
++#endif /* !AFS && !HAVE_EACCESS */
+ return r;
+-#endif /* !AFS */
+ }
+
+ /* Return non-zero if FILE exists and is executable.
+Index: lib/sh/eaccess.c
+===================================================================
+--- lib/sh/eaccess.c.orig
++++ lib/sh/eaccess.c
+@@ -201,7 +201,7 @@ sh_eaccess (path, mode)
+ if (path_is_devfd (path))
+ return (sh_stataccess (path, mode));
+
+-#if defined (HAVE_EACCESS) /* FreeBSD */
++#if defined (HAVE_EACCESS) /* FreeBSD, GLIBC_2.4+ */
+ return (eaccess (path, mode));
+ #elif defined (EFF_ONLY_OK) /* SVR4(?), SVR4.2 */
+ return access (path, mode|EFF_ONLY_OK);