From 5a1059b6f3ab031afa48c5ddcd81392444de53a9 Mon Sep 17 00:00:00 2001 From: Tatsuya Kinoshita Date: Thu, 25 Mar 2021 18:55:49 +0900 Subject: Prevent memory leak in fuzzer --- fuzz/fuzz-conv.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'fuzz') diff --git a/fuzz/fuzz-conv.c b/fuzz/fuzz-conv.c index 5414742..ae6d31f 100644 --- a/fuzz/fuzz-conv.c +++ b/fuzz/fuzz-conv.c @@ -9,7 +9,7 @@ char *get_null_terminated(const uint8_t *data, size_t size) { char *new_str = (char *)malloc(size+1); if (new_str == NULL){ - return NULL; + exit(1); } memcpy(new_str, data, size); new_str[size] = '\0'; @@ -57,17 +57,19 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size){ sprintf(filename, "/tmp/libfuzzer.%d", getpid()); FILE *fp = fopen(filename, "wb"); - if (!fp) { - return 0; + if (fp) { + fwrite(data, size, 1, fp); + fclose(fp); } - fwrite(data, size, 1, fp); - fclose(fp); FILE *f = fopen(filename, "r"); - Str s = Strfgetall(f); - wc_Str_conv_with_detect(s, &from, from, to); - if (s != NULL) { - Strfree(s); + if (f) { + Str s = Strfgetall(f); + wc_Str_conv_with_detect(s, &from, from, to); + if (s != NULL) { + Strfree(s); + } + fclose(f); } unlink(filename); -- cgit v1.2.3