mirror of
git://git.sv.gnu.org/coreutils
synced 2026-06-05 15:22:12 -04:00
(gobble_file): Do not fall back on lstat if stat
fails; POSIX.2 does not allow this. Invoke acl only on non-symlinks, and only if lstat or stat succeeds.
This commit is contained in:
@@ -1887,23 +1887,9 @@ gobble_file (const char *name, enum filetype type, int explicit_arg,
|
||||
attach (path, dirname, name);
|
||||
}
|
||||
|
||||
if (trace_links)
|
||||
{
|
||||
val = stat (path, &files[files_index].stat);
|
||||
if (val < 0)
|
||||
{
|
||||
/* Perhaps a symbolically-linked to file doesn't exist; stat
|
||||
the link instead. */
|
||||
val = lstat (path, &files[files_index].stat);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
val = lstat (path, &files[files_index].stat);
|
||||
#if USE_ACL
|
||||
files[files_index].have_acl = (acl (path, GETACLCNT, 0, NULL) > 4);
|
||||
#endif
|
||||
}
|
||||
val = (trace_links
|
||||
? stat (path, &files[files_index].stat)
|
||||
: lstat (path, &files[files_index].stat));
|
||||
|
||||
if (val < 0)
|
||||
{
|
||||
@@ -1912,6 +1898,11 @@ gobble_file (const char *name, enum filetype type, int explicit_arg,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if USE_ACL
|
||||
if (! S_ISLNK (files[files_index].stat.st_mode))
|
||||
files[files_index].have_acl = 4 < acl (path, GETACLCNT, 0, NULL);
|
||||
#endif
|
||||
|
||||
if (S_ISLNK (files[files_index].stat.st_mode)
|
||||
&& (explicit_arg || format == long_format || check_symlink_color))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user