summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRohan Sable <rsable@redhat.com>2022-03-07 14:14:13 +0000
committerPádraig Brady <P@draigBrady.com>2022-03-07 23:26:42 +0000
commit85c975df2c25bd799370b04bb294e568e001102f (patch)
tree83ff610524f7159561c57539be1898d98a007623
parent3f61958495c156446e375b8cf3ecaea2d73e4d51 (diff)
downloadcoreutils-85c975df2c25bd799370b04bb294e568e001102f.tar.gz
ls: avoid triggering automounts
statx() has different defaults wrt automounting compared to stat() or lstat(), so explicitly set the AT_NO_AUTOMOUNT flag to suppress that behavior, and avoid unintended operations or potential errors. * src/ls.c (do_statx): Pass AT_NO_AUTOMOUNT to avoid this behavior. * NEWS: Mention the change in behavior. Fixes https://bugs.gnu.org/54286 Signed-off-by: Rohan Sable <rsable@redhat.com>
-rw-r--r--NEWS3
-rw-r--r--src/ls.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index af6596b06..a3442c5dd 100644
--- a/NEWS
+++ b/NEWS
@@ -75,6 +75,9 @@ GNU coreutils NEWS -*- outline -*-
seek_bytes are therefore obsolescent and are no longer documented,
though they still work.
+ ls no longer tries to automount files, reverting to the behavior
+ before the statx() call was introduced in coreutils-8.32.
+
timeout --foreground --kill-after=... will now exit with status 137
if the kill signal was sent, which is consistent with the behavior
when the --foreground option is not specified. This allows users to
diff --git a/src/ls.c b/src/ls.c
index 1930e4abb..255789061 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -1177,7 +1177,7 @@ do_statx (int fd, char const *name, struct stat *st, int flags,
{
struct statx stx;
bool want_btime = mask & STATX_BTIME;
- int ret = statx (fd, name, flags, mask, &stx);
+ int ret = statx (fd, name, flags | AT_NO_AUTOMOUNT, mask, &stx);
if (ret >= 0)
{
statx_to_stat (&stx, st);