From: Karel Zak Date: Tue, 20 Mar 2018 11:52:16 +0000 (+0100) Subject: libmount: deallocate on /proc/swaps parse error X-Git-Tag: v2.32~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b25f3c15c20e8161c515f13bf972cc4d5e0ab461;p=thirdparty%2Futil-linux.git libmount: deallocate on /proc/swaps parse error Addresses: https://github.com/karelzak/util-linux/issues/596 Signed-off-by: Karel Zak --- diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c index ba22ef4be2..3ed84ebc28 100644 --- a/libmount/src/tab_parse.c +++ b/libmount/src/tab_parse.c @@ -187,7 +187,7 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, char *s) fs->flags |= MNT_FS_KERNEL; fs->devno = makedev(maj, min); - /* remove "(deleted)" suffix */ + /* remove "\040(deleted)" suffix */ sz = strlen(fs->target); if (sz > PATH_DELETED_SUFFIX_SZ) { char *ptr = fs->target + (sz - PATH_DELETED_SUFFIX_SZ); @@ -318,9 +318,7 @@ static int mnt_parse_swaps_line(struct libmnt_fs *fs, char *s) fs->size = fsz; fs->usedsize = usz; - unmangle_string(src); - - /* remove "(deleted)" suffix */ + /* remove "\040(deleted)" suffix */ sz = strlen(src); if (sz > PATH_DELETED_SUFFIX_SZ) { char *p = src + (sz - PATH_DELETED_SUFFIX_SZ); @@ -328,15 +326,18 @@ static int mnt_parse_swaps_line(struct libmnt_fs *fs, char *s) *p = '\0'; } + unmangle_string(src); + rc = mnt_fs_set_source(fs, src); if (!rc) mnt_fs_set_fstype(fs, "swap"); - free(src); } else { DBG(TAB, ul_debug("tab parse error: [sscanf rc=%d]: '%s'", rc, s)); rc = -EINVAL; } + free(src); + return rc; }