]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: fix blkid_parse_tag_string() to ignore incomplete tags
authorKarel Zak <kzak@redhat.com>
Mon, 6 May 2013 15:20:03 +0000 (17:20 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 6 May 2013 15:20:03 +0000 (17:20 +0200)
fstab entry:

    FOO=     /       btrfs  defaults       1 1

Program received signal SIGABRT, Aborted.
0x00007f016ccd8819 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56   return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
(gdb) bt
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:196

Reported-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/src/tag.c

index 9cfd61769cb2c46e1f763f07fc4565f29c0d0b00..3a709501376068d30d073d1ccc2a497c3ae94b7a 100644 (file)
@@ -237,8 +237,7 @@ int blkid_parse_tag_string(const char *token, char **ret_type, char **ret_val)
                        goto errout; /* missing closing quote */
                *cp = '\0';
        }
-       if (value && *value)
-               value = strdup(value);
+       value = value && *value ? strdup(value) : NULL;
        if (!value)
                goto errout;
 
@@ -250,6 +249,7 @@ int blkid_parse_tag_string(const char *token, char **ret_type, char **ret_val)
        return 0;
 
 errout:
+       DBG(TAG, blkid_debug("parse error: '%s'", token));
        free(name);
        return -1;
 }