Skip to contentSkip to conversation

docproc: fix potential memory leak in find_all_symbols()

PATCH New Arjun Sreedharan 1 participant 1 message Dec 11, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 docproc: fix potential memory leak in find_all_symbols()

in case realloc() fails, @data is overwritten by NULL losing reference to the memory. This is avoided by @data_old

---
 scripts/docproc.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
scripts/docproc.c +8 -1
index e267e621..e230c0b 100644
@@ -359,7 +359,8 @@ static void find_all_symbols(char *filename)
 	int ret, i, count, start;
 	char real_filename[PATH_MAX + 1];
 	int pipefd[2];
-	char *data, *str;
+	char *data, *data_old;
+	char *str;
 	size_t data_len = 0;
 
 	vec[0] = KERNELDOC;
@@ -395,7 +396,13 @@ static void find_all_symbols(char *filename)
 						   data + data_len,
 						   4096)) > 0) {
 					data_len += ret;
+					data_old = data;
 					data = realloc(data, data_len + 4096);
+					if (!data) {
+						free(data_old);
+						fprintf(stderr, "Out of memory.\n");
+						exit(1);
+					}
 				}
 			} while (ret == -EAGAIN);
 			if (ret != 0) {
Signature · 1 line
1.7.11.7