[dm-devel] [PATCH 08/14] libmultipath: donot free *dst if REALLOC fails in, merge_words
lixiaokeng
lixiaokeng at huawei.com
Wed Sep 2 07:20:29 UTC 2020
In merge_words func, if REALLOC() fails, the input *dst will
be freed. If so, mpp->hwhandler| mpp->features|mpp->selector
may be set to NULL after calling merge_words func in
disassemble_map func. This may cause accessing freed memory
problem.
Here, we donot free *dst if REALLOC() fails in merge_words func.
Signed-off-by: Zhiqiang Liu <liuzhiqiang26 at huawei.com>
Signed-off-by: Lixiaokeng <lixiaokeng at huawei.com>
---
libmultipath/dmparser.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/libmultipath/dmparser.c b/libmultipath/dmparser.c
index c1031616..482e9d0e 100644
--- a/libmultipath/dmparser.c
+++ b/libmultipath/dmparser.c
@@ -26,13 +26,12 @@ merge_words(char **dst, const char *word)
dstlen = strlen(*dst);
len = dstlen + strlen(word) + 2;
- *dst = REALLOC(*dst, len);
+ p = REALLOC(*dst, len);
- if (!*dst) {
- free(p);
+ if (!p)
return 1;
- }
+ *dst = p;
p = *dst + dstlen;
*p = ' ';
++p;
--
More information about the dm-devel
mailing list