http://bugs.gentoo.org/265425 From 63451a06b7484d220750ed8574d3ee84e156daf5 Mon Sep 17 00:00:00 2001 From: Andreas Gruenbacher 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