|
 |
b6d9ac |
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
 |
b6d9ac |
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
 |
b6d9ac |
Date: Mon, 7 Oct 2019 17:17:13 -0500
|
|
 |
b6d9ac |
Subject: [PATCH] libmultipath: fix leak in foreign code
|
|
 |
b6d9ac |
|
|
 |
b6d9ac |
If scandir fails or finds no foreign libraries, enable_re needs to be
|
|
 |
b6d9ac |
freed before exitting.
|
|
 |
b6d9ac |
|
|
 |
b6d9ac |
Fixes: 8d03eda4 'multipath.conf: add "enable_foreign" parameter'
|
|
 |
b6d9ac |
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
 |
b6d9ac |
---
|
|
 |
b6d9ac |
libmultipath/foreign.c | 11 +++++++----
|
|
 |
b6d9ac |
1 file changed, 7 insertions(+), 4 deletions(-)
|
|
 |
b6d9ac |
|
|
 |
b6d9ac |
diff --git a/libmultipath/foreign.c b/libmultipath/foreign.c
|
|
 |
b6d9ac |
index 4b34e141..68e9a9b8 100644
|
|
 |
b6d9ac |
--- a/libmultipath/foreign.c
|
|
 |
b6d9ac |
+++ b/libmultipath/foreign.c
|
|
 |
b6d9ac |
@@ -129,7 +129,7 @@ static int _init_foreign(const char *multipath_dir, const char *enable)
|
|
 |
b6d9ac |
char pathbuf[PATH_MAX];
|
|
 |
b6d9ac |
struct dirent **di;
|
|
 |
b6d9ac |
struct scandir_result sr;
|
|
 |
b6d9ac |
- int r, i;
|
|
 |
b6d9ac |
+ int r, i, ret = 0;
|
|
 |
b6d9ac |
regex_t *enable_re = NULL;
|
|
 |
b6d9ac |
|
|
 |
b6d9ac |
foreigns = vector_alloc();
|
|
 |
b6d9ac |
@@ -157,13 +157,15 @@ static int _init_foreign(const char *multipath_dir, const char *enable)
|
|
 |
b6d9ac |
if (r == 0) {
|
|
 |
b6d9ac |
condlog(3, "%s: no foreign multipath libraries found",
|
|
 |
b6d9ac |
__func__);
|
|
 |
b6d9ac |
- return 0;
|
|
 |
b6d9ac |
+ ret = 0;
|
|
 |
b6d9ac |
+ goto out;
|
|
 |
b6d9ac |
} else if (r < 0) {
|
|
 |
b6d9ac |
r = errno;
|
|
 |
b6d9ac |
condlog(1, "%s: error %d scanning foreign multipath libraries",
|
|
 |
b6d9ac |
__func__, r);
|
|
 |
b6d9ac |
_cleanup_foreign();
|
|
 |
b6d9ac |
- return -r;
|
|
 |
b6d9ac |
+ ret = -r;
|
|
 |
b6d9ac |
+ goto out;
|
|
 |
b6d9ac |
}
|
|
 |
b6d9ac |
|
|
 |
b6d9ac |
sr.di = di;
|
|
 |
b6d9ac |
@@ -250,8 +252,9 @@ static int _init_foreign(const char *multipath_dir, const char *enable)
|
|
 |
b6d9ac |
free_foreign(fgn);
|
|
 |
b6d9ac |
}
|
|
 |
b6d9ac |
pthread_cleanup_pop(1); /* free_scandir_result */
|
|
 |
b6d9ac |
+out:
|
|
 |
b6d9ac |
pthread_cleanup_pop(1); /* free_pre */
|
|
 |
b6d9ac |
- return 0;
|
|
 |
b6d9ac |
+ return ret;
|
|
 |
b6d9ac |
}
|
|
 |
b6d9ac |
|
|
 |
b6d9ac |
int init_foreign(const char *multipath_dir, const char *enable)
|
|
 |
b6d9ac |
--
|
|
 |
b6d9ac |
2.17.2
|
|
 |
b6d9ac |
|