]> git.itanic.dy.fi Git - linux-stable/commitdiff
recordmcount: Fix memory leaks in the uwrite function
authorHao Zeng <zenghao@kylinos.cn>
Wed, 26 Apr 2023 01:05:27 +0000 (09:05 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 30 May 2023 11:38:36 +0000 (12:38 +0100)
[ Upstream commit fa359d068574d29e7d2f0fdd0ebe4c6a12b5cfb9 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
scripts/recordmcount.c

index 9012e33ae22f86d35438044a8de50c90cdf1aa70..731600de0389312d3545772792cd17b45e7a39e2 100644 (file)
@@ -146,6 +146,7 @@ uwrite(int const fd, void const *const buf, size_t const count)
 {
        size_t cnt = count;
        off_t idx = 0;
+       void *p = NULL;
 
        file_updated = 1;
 
@@ -153,7 +154,10 @@ uwrite(int const fd, 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) {