From 80c31a0b596125b387c6b27c899e8bad4e46680b Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 16 Dec 2016 12:46:45 +0100 Subject: [PATCH] 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 --- libmount/src/tab.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libmount/src/tab.c b/libmount/src/tab.c index f72dcf1c2e..85fd427b54 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; -- 2.47.3