diff --git a/0002-lib-Fixed-memory-leaks-in-lib-sysfs_device.c.patch b/0002-lib-Fixed-memory-leaks-in-lib-sysfs_device.c.patch new file mode 100644 index 0000000..60f3874 --- /dev/null +++ b/0002-lib-Fixed-memory-leaks-in-lib-sysfs_device.c.patch @@ -0,0 +1,38 @@ +From e2267a5def65380db738e434da4a3920e6136f95 Mon Sep 17 00:00:00 2001 +From: Chris White +Date: Fri, 25 Jun 2021 17:55:00 +0000 +Subject: [PATCH] lib: Fixed memory leaks in lib/sysfs_device.c + +- sysfs_open_device_tree() has two case where the function returns + before the devlist pointer is closed. + +Warned-by: covscan +Signed-off-by: Chris White +--- + lib/sysfs_device.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/sysfs_device.c b/lib/sysfs_device.c +index 5f815f9..78ed48e 100644 +--- a/lib/sysfs_device.c ++++ b/lib/sysfs_device.c +@@ -247,6 +247,7 @@ struct sysfs_device *sysfs_open_device_tree(const char *path) + if (new == NULL) { + dbg_printf("Error opening device tree at %s\n", + cur->path); ++ sysfs_close_device(devlist); + sysfs_close_device_tree(rootdev); + return NULL; + } +@@ -257,7 +258,7 @@ struct sysfs_device *sysfs_open_device_tree(const char *path) + dlist_unshift_sorted(rootdev->children, new, sort_list); + } + } +- ++ sysfs_close_device(devlist); + return rootdev; + } + +-- +2.27.0 + diff --git a/0003-lib-Fixed-memory-leaks-in-lib-sysfs_attr.c.patch b/0003-lib-Fixed-memory-leaks-in-lib-sysfs_attr.c.patch new file mode 100644 index 0000000..b1abcc5 --- /dev/null +++ b/0003-lib-Fixed-memory-leaks-in-lib-sysfs_attr.c.patch @@ -0,0 +1,62 @@ +From 9a4aac68658a61df1c97ecdd7d9a9e67f572fb3e Mon Sep 17 00:00:00 2001 +From: Chris White +Date: Fri, 25 Jun 2021 17:32:10 +0000 +Subject: [PATCH] lib: Fixed memory leaks in lib/sysfs_attr.c + +- read_dir_links() has a case where the function returns before + closing the dir pointer. + +- sysfs_read_dir_subdirs() has a case where the function returns + before closing the dev pointer. + +- read_dir_subdirs() has a case where the function returns before + closing the dir pointer. + +- get_attributes_list() has a case where the function returns before + closing the dir pointer. + +Warned-by: covscan +Signed-off-by: Chris White +--- + lib/sysfs_attr.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/sysfs_attr.c b/lib/sysfs_attr.c +index fe27dbe..82aacf4 100644 +--- a/lib/sysfs_attr.c ++++ b/lib/sysfs_attr.c +@@ -415,6 +415,7 @@ struct dlist *read_dir_links(const char *path) + (SYSFS_NAME_LEN, sysfs_del_name); + if (!linklist) { + dbg_printf("Error creating list\n"); ++ closedir(dir); + return NULL; + } + } +@@ -470,6 +471,7 @@ struct sysfs_device *sysfs_read_dir_subdirs(const char *path) + dir = opendir(path); + if (!dir) { + dbg_printf("Error opening directory %s\n", path); ++ sysfs_close_device(dev); + return NULL; + } + while ((dirent = readdir(dir)) != NULL) { +@@ -524,6 +526,7 @@ struct dlist *read_dir_subdirs(const char *path) + (SYSFS_NAME_LEN, sysfs_del_name); + if (!dirlist) { + dbg_printf("Error creating list\n"); ++ closedir(dir); + return NULL; + } + } +@@ -573,6 +576,7 @@ struct dlist *get_attributes_list(struct dlist *alist, const char *path) + sysfs_del_attribute); + if (!alist) { + dbg_printf("Error creating list\n"); ++ closedir(dir); + return NULL; + } + } +-- +2.27.0 + diff --git a/sysfsutils.spec b/sysfsutils.spec index 84ab4e9..b61be25 100644 --- a/sysfsutils.spec +++ b/sysfsutils.spec @@ -1,6 +1,6 @@ Name: sysfsutils Version: 2.1.1 -Release: 2 +Release: 3 Summary: A set of utilities for interfacing with sysfs License: GPLv2 and LGPLv2+ URL: https://github.com/linux-ras/sysfsutils @@ -8,6 +8,8 @@ URL: https://github.com/linux-ras/sysfsutils Source0: https://github.com/linux-ras/sysfsutils/archive/v%{version}.tar.gz Patch1: 0001-lib-Fixed-a-memory-leak-in-lib-sysfs_driver.patch +Patch2: 0002-lib-Fixed-memory-leaks-in-lib-sysfs_device.c.patch +Patch3: 0003-lib-Fixed-memory-leaks-in-lib-sysfs_attr.c.patch BuildRequires: gcc chrpath autoconf automake make libtool Provides: libsysfs libsysfs%{?_isa} @@ -81,6 +83,9 @@ chrpath -d $(find $RPM_BUILD_ROOT -name systool) %changelog +* Sat May 6 2023 Jiangtian Feng - 2.1.1-3 +- backport community patches to fix mem leak in lib/sysfs_device.c and lib/sysfs_attr.c + * Tue Nov 1 2022 lihaoxiang - 2.1.1-2 - fixed a memory leak in lib/sysfs_driver.c