libfstools: fix matching device name
authorDaniel Golle <daniel@makrotopia.org>
Fri, 30 Jun 2017 15:20:22 +0000 (17:20 +0200)
committerDaniel Golle <daniel@makrotopia.org>
Fri, 30 Jun 2017 15:20:22 +0000 (17:20 +0200)
compare strlen()+1 characters to make sure we match the trailing \0 as
well. Otherwise things get fishy when using lvm2, see this example:

/dev/mapper/data: UUID="xxxxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxxxx" MOUNT="/mnt" TYPE="LVM2_member"
/dev/mapper/data-fs: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" LABEL="xxxxxxxx" VERSION="1.0" MOUNT="/mnt" TYPE="ext4"

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
libfstools/find.c

index 190fa81ad564d75c56ba39b48df33f2729283789..fcc47a7dc1c10586d7e9f7f6ad79ddce2e5308bf 100644 (file)
@@ -46,7 +46,6 @@ find_mount(char *mp)
 {
        FILE *fp = fopen("/proc/mounts", "r");
        static char line[256];
-       char *point = NULL;
 
        if(!fp)
                return NULL;
@@ -75,7 +74,7 @@ find_mount(char *mp)
 
        fclose(fp);
 
-       return point;
+       return NULL;
 }
 
 /*
@@ -184,7 +183,7 @@ find_mount_point(char *block, int root_only)
                devname = tmp;
 
                /* if device name matches */
-               if (!strncmp(block, devname, len)) {
+               if (!strncmp(block, devname, len + 1)) {
                        if (root_only && fs_rootfs_only(fstype))
                                break;