recordmcount: Fix memory leaks in the uwrite function
authorHao Zeng <zenghao@kylinos.cn>
Wed, 26 Apr 2023 01:05:27 +0000 (09:05 +0800)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Wed, 26 Apr 2023 01:10:20 +0000 (21:10 -0400)
Common realloc mistake: 'file_append' nulled but not freed upon failure

Link: https://lkml.kernel.org/r/20230426010527.703093-1-zenghao@kylinos.cn
Signed-off-by: Hao Zeng <zenghao@kylinos.cn>
Suggested-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
scripts/recordmcount.c

index e302165..40ae6b2 100644 (file)
@@ -110,6 +110,7 @@ static ssize_t uwrite(void const *const buf, size_t const count)
 {
        size_t cnt = count;
        off_t idx = 0;
+       void *p = NULL;
 
        file_updated = 1;
 
@@ -117,7 +118,10 @@ static ssize_t uwrite(void const *const buf, size_t const count)
                off_t aoffset = (file_ptr + count) - file_end;
 
                if (aoffset > file_append_size) {
-                       file_append = realloc(file_append, aoffset);
+                       p = realloc(file_append, aoffset);
+                       if (!p)
+                               free(file_append);
+                       file_append = p;
                        file_append_size = aoffset;
                }
                if (!file_append) {