From b25f3c15c20e8161c515f13bf972cc4d5e0ab461 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Tue, 20 Mar 2018 12:52:16 +0100 Subject: libmount: deallocate on /proc/swaps parse error Addresses: https://github.com/karelzak/util-linux/issues/596 Signed-off-by: Karel Zak --- libmount/src/tab_parse.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'libmount/src/tab_parse.c') diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c index ba22ef4be..3ed84ebc2 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; } -- cgit v1.2.3-55-g7522