From 7e12d72cdccaa61a0097b9d1d43461ab66012262 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 19 Jul 2019 12:51:30 +0200 Subject: [PATCH] 2.33.2-2: fix #1731407 (libmount mem-leak) --- libmount-fix-memleak-on-parse-errors.patch | 89 ++++++++++++++++++++++ util-linux.spec | 7 +- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 libmount-fix-memleak-on-parse-errors.patch diff --git a/libmount-fix-memleak-on-parse-errors.patch b/libmount-fix-memleak-on-parse-errors.patch new file mode 100644 index 0000000..9b202e7 --- /dev/null +++ b/libmount-fix-memleak-on-parse-errors.patch @@ -0,0 +1,89 @@ +From 82e39473a5b9139248c94a0d3b2f6432d57566cc Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Mon, 15 Apr 2019 12:55:46 +0200 +Subject: [PATCH] libmount: fix memleak on parse errors + +Addresses: https://github.com/systemd/systemd/pull/12252 +Signed-off-by: Karel Zak + +diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c +index 16e7956af..9b8bfc593 100644 +--- a/libmount/src/tab_parse.c ++++ b/libmount/src/tab_parse.c +@@ -95,7 +95,7 @@ static inline const char *skip_nonspearator(const char *p) + static int mnt_parse_table_line(struct libmnt_fs *fs, const char *s) + { + int rc = 0; +- char *p; ++ char *p = NULL; + + fs->passno = fs->freq = 0; + +@@ -103,6 +103,7 @@ static int mnt_parse_table_line(struct libmnt_fs *fs, const char *s) + p = unmangle(s, &s); + if (!p || (rc = __mnt_fs_set_source_ptr(fs, p))) { + DBG(TAB, ul_debug("tab parse error: [source]")); ++ free(p); + goto fail; + } + +@@ -121,6 +122,7 @@ static int mnt_parse_table_line(struct libmnt_fs *fs, const char *s) + p = unmangle(s, &s); + if (!p || (rc = __mnt_fs_set_fstype_ptr(fs, p))) { + DBG(TAB, ul_debug("tab parse error: [fstype]")); ++ free(p); + goto fail; + } + +@@ -130,11 +132,13 @@ static int mnt_parse_table_line(struct libmnt_fs *fs, const char *s) + p = unmangle(s, &s); + if (p && (rc = mnt_fs_set_options(fs, p))) { + DBG(TAB, ul_debug("tab parse error: [options]")); ++ free(p); + goto fail; + } +- + if (!p) + goto done; ++ free(p); ++ + s = skip_separator(s); + if (!s || !*s) + goto done; +@@ -250,6 +254,7 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, const char *s) + p = unmangle(s, &s); + if (!p || (rc = __mnt_fs_set_fstype_ptr(fs, p))) { + DBG(TAB, ul_debug("tab parse error: [fstype]")); ++ free(p); + goto fail; + } + +@@ -267,6 +272,7 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, const char *s) + p = unmangle(s, &s); + if (!p || (rc = __mnt_fs_set_source_ptr(fs, p))) { + DBG(TAB, ul_debug("tab parse error: [regular source]")); ++ free(p); + goto fail; + } + } +@@ -319,7 +325,8 @@ static int mnt_parse_utab_line(struct libmnt_fs *fs, const char *s) + char *v = unmangle(p + 4, &end); + if (!v) + goto enomem; +- __mnt_fs_set_source_ptr(fs, v); ++ if (__mnt_fs_set_source_ptr(fs, v)) ++ free(v); + + } else if (!fs->target && !strncmp(p, "TARGET=", 7)) { + fs->target = unmangle(p + 7, &end); +@@ -378,6 +385,7 @@ static int mnt_parse_swaps_line(struct libmnt_fs *fs, const char *s) + } + if (!p || (rc = __mnt_fs_set_source_ptr(fs, p))) { + DBG(TAB, ul_debug("tab parse error: [source]")); ++ free(p); + goto fail; + } + +-- +2.21.0 + diff --git a/util-linux.spec b/util-linux.spec index a7f2aed..dc83b3f 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -2,7 +2,7 @@ Summary: A collection of basic system utilities Name: util-linux Version: 2.33.2 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain URL: http://en.wikipedia.org/wiki/Util-linux @@ -93,6 +93,8 @@ Requires: libfdisk = %{version}-%{release} ### # 151635 - makeing /var/log/lastlog Patch0: 2.28-login-lastlog-create.patch +# 1731407 - libmount memory leak +Patch1: libmount-fix-memleak-on-parse-errors.patch %description The util-linux package contains a large variety of low-level system @@ -910,6 +912,9 @@ fi %{_libdir}/python*/site-packages/libmount/ %changelog +* Fri Jul 19 2019 Karel Zak - 2.33.2-2 +- fix #1731407 - libmount memory leak + * Tue Apr 9 2019 Karel Zak - 2.33.2-1 - upgrade to v2.33.2 https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.33/v2.33.2-ReleaseNotes