From: Thomas Weißschuh Date: Wed, 19 Apr 2023 19:48:00 +0000 (+0200) Subject: libmount: safe_stat: support relative filenames X-Git-Tag: v2.39~67^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=98f24109257958ef045370a0d811e02e366fd016;p=thirdparty%2Futil-linux.git libmount: safe_stat: support relative filenames By using AT_CWFD the call to statx() can also handle relative filenames. Without this safe_stat() which is called on the fstab, source, target... Signed-off-by: Thomas Weißschuh --- diff --git a/libmount/src/utils.c b/libmount/src/utils.c index e03d932651..50553f1d5a 100644 --- a/libmount/src/utils.c +++ b/libmount/src/utils.c @@ -116,7 +116,7 @@ static int safe_stat(const char *target, struct stat *st, int nofollow) int rc; struct statx stx = { 0 }; - rc = statx(-1, target, + rc = statx(AT_FDCWD, target, /* flags */ AT_STATX_DONT_SYNC | AT_NO_AUTOMOUNT diff --git a/tests/ts/mount/fstab-all b/tests/ts/mount/fstab-all index 53b9651c22..83e1b636b3 100755 --- a/tests/ts/mount/fstab-all +++ b/tests/ts/mount/fstab-all @@ -121,6 +121,17 @@ $TS_CMD_UMOUNT ${MOUNTPOINT}{A,B,C,D} ts_finalize_subtest +ts_init_subtest "relative-path" +cd "$TS_OUTDIR" > /dev/null +$TS_CMD_MOUNT --all --fstab $(basename "$MY_FSTAB") >> $TS_OUTPUT 2>> $TS_ERRLOG +[ $? == 0 ] || ts_log "mount failed" +udevadm settle +$TS_CMD_UMOUNT ${MOUNTPOINT}{A,B,C,D} +[ $? == 0 ] || ts_log "umount failed" +cd - > /dev/null +ts_finalize_subtest + + ts_init_subtest "prefix" MY_ROOT="$TS_OUTDIR/${TS_TESTNAME}-rootdir" [ -d "${MY_ROOT}" ] || mkdir -p ${MY_ROOT}