]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
mountpoint: account for error from in mnt_fs_get_target
authorDave Reisner <d@falconindy.com>
Fri, 2 Mar 2012 03:46:59 +0000 (22:46 -0500)
committerKarel Zak <kzak@redhat.com>
Fri, 2 Mar 2012 08:42:18 +0000 (09:42 +0100)
commit 04f087ec didn't take into consideration that mnt_fs_get_target()
could return an error, and would therefore show false positives, such
as:

$ mkdir foo; mountpoint foo
foo is a mountpoint

Signed-off-by: Dave Reisner <dreisner@archlinux.org>
sys-utils/mountpoint.c

index bd92667590be823a7176f528234a7768a1314f14..a45cabdccfc7a9a5e1c472121a0baba1eeec6b9c 100644 (file)
@@ -45,6 +45,7 @@ static int dir_to_device(const char *spec, dev_t *dev)
        struct libmnt_table *tb = mnt_new_table_from_file("/proc/self/mountinfo");
        struct libmnt_fs *fs;
        struct libmnt_cache *cache;
+       int rc = -1;
 
        if (!tb) {
                /*
@@ -82,12 +83,14 @@ static int dir_to_device(const char *spec, dev_t *dev)
        mnt_table_set_cache(tb, cache);
 
        fs = mnt_table_find_target(tb, spec, MNT_ITER_BACKWARD);
-       if (fs && mnt_fs_get_target(fs))
+       if (fs && mnt_fs_get_target(fs)) {
                *dev = mnt_fs_get_devno(fs);
+               rc = 0;
+       }
 
        mnt_free_table(tb);
        mnt_free_cache(cache);
-       return 0;
+       return rc;
 }
 
 static int print_devno(const char *devname, struct stat *st)