summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-apps/acl/files/0001-Make-sure-that-getfacl-R-only-calls-stat-2-on-symlin.patch')
-rw-r--r--sys-apps/acl/files/0001-Make-sure-that-getfacl-R-only-calls-stat-2-on-symlin.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/sys-apps/acl/files/0001-Make-sure-that-getfacl-R-only-calls-stat-2-on-symlin.patch b/sys-apps/acl/files/0001-Make-sure-that-getfacl-R-only-calls-stat-2-on-symlin.patch
new file mode 100644
index 000000000000..f3925c76003b
--- /dev/null
+++ b/sys-apps/acl/files/0001-Make-sure-that-getfacl-R-only-calls-stat-2-on-symlin.patch
@@ -0,0 +1,47 @@
+http://bugs.gentoo.org/265425
+
+From 63451a06b7484d220750ed8574d3ee84e156daf5 Mon Sep 17 00:00:00 2001
+From: Andreas Gruenbacher <agruen@suse.de>
+Date: Tue, 23 Jun 2009 00:29:45 +0200
+Subject: [PATCH] Make sure that getfacl -R only calls stat(2) on symlinks when it needs to
+
+This fixes http://oss.sgi.com/bugzilla/show_bug.cgi?id=790
+"getfacl follows symlinks, even without -L".
+---
+ getfacl/getfacl.c | 7 ++++---
+
+diff --git a/getfacl/getfacl.c b/getfacl/getfacl.c
+index fc650e3..b3e6200 100644
+--- a/getfacl/getfacl.c
++++ b/getfacl/getfacl.c
+@@ -70,7 +70,7 @@ struct option long_options[] = {
+ const char *progname;
+ const char *cmd_line_options;
+
+-int walk_flags = WALK_TREE_DEREFERENCE;
++int walk_flags = WALK_TREE_DEREFERENCE_TOPLEVEL;
+ int opt_print_acl;
+ int opt_print_default_acl;
+ int opt_strip_leading_slash = 1;
+@@ -642,7 +642,7 @@ int main(int argc, char *argv[])
+ case 'L': /* follow all symlinks */
+ if (posixly_correct)
+ goto synopsis;
+- walk_flags |= WALK_TREE_LOGICAL;
++ walk_flags |= WALK_TREE_LOGICAL | WALK_TREE_DEREFERENCE;
+ walk_flags &= ~WALK_TREE_PHYSICAL;
+ break;
+
+@@ -650,7 +650,8 @@ int main(int argc, char *argv[])
+ if (posixly_correct)
+ goto synopsis;
+ walk_flags |= WALK_TREE_PHYSICAL;
+- walk_flags &= ~WALK_TREE_LOGICAL;
++ walk_flags &= ~(WALK_TREE_LOGICAL | WALK_TREE_DEREFERENCE |
++ WALK_TREE_DEREFERENCE_TOPLEVEL);
+ break;
+
+ case 's': /* skip files with only base entries */
+--
+1.6.3.3
+