diff options
author | Karel Zak | 2016-12-16 12:46:45 +0100 |
---|---|---|
committer | Karel Zak | 2016-12-16 13:00:45 +0100 |
commit | 80c31a0b596125b387c6b27c899e8bad4e46680b (patch) | |
tree | 8e8a33eaf0594125130f48495c7d919af1ef8c24 /libmount/src | |
parent | more: avoid double free() on exit (diff) | |
download | kernel-qcow2-util-linux-80c31a0b596125b387c6b27c899e8bad4e46680b.tar.gz kernel-qcow2-util-linux-80c31a0b596125b387c6b27c899e8bad4e46680b.tar.xz kernel-qcow2-util-linux-80c31a0b596125b387c6b27c899e8bad4e46680b.zip |
findmnt: error on --target /non-exist
The original --target implementation (< v2.27) has been based on
stat(), so it was usable for valid paths only.
The new implementation is based on search in the mountinfo file, so it
works for arbitrary crazy path. This is not backwardly compatible and
if the path does not exist then it still returns at least root
directory mount entry.
This patch forces mnt_table_find_mountpoint() to check if the path is
valid before we search in the mountinfo file.
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libmount/src')
-rw-r--r-- | libmount/src/tab.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libmount/src/tab.c b/libmount/src/tab.c index f72dcf1c2..85fd427b5 100644 --- a/libmount/src/tab.c +++ b/libmount/src/tab.c @@ -780,6 +780,7 @@ struct libmnt_fs *mnt_table_find_mountpoint(struct libmnt_table *tb, int direction) { char *mnt; + struct stat st; if (!tb || !path || !*path) return NULL; @@ -788,6 +789,9 @@ struct libmnt_fs *mnt_table_find_mountpoint(struct libmnt_table *tb, DBG(TAB, ul_debugobj(tb, "lookup MOUNTPOINT: '%s'", path)); + if (mnt_stat_mountpoint(path, &st)) + return NULL; + mnt = strdup(path); if (!mnt) return NULL; |