From 0f954fd4c84afb61d954503f12d7cb80344743bf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 26 May 2016 17:26:55 +0200 Subject: [PATCH] Resource leaks fixes (catched by Coverity) --- cheevos.c | 1 + config_file_userdata.c | 2 ++ libretro-common/formats/png/rpng.c | 3 +++ libretro-db/libretrodb.c | 1 + patch.c | 3 +++ tasks/task_database_cue.c | 3 +++ 6 files changed, 13 insertions(+) diff --git a/cheevos.c b/cheevos.c index 3be5eb9dc3..e574458d82 100644 --- a/cheevos.c +++ b/cheevos.c @@ -2010,6 +2010,7 @@ static unsigned cheevos_find_game_id_nes( MD5_Update(&ctx, (void*) data, rom_size << 14); MD5_Final(hash, &ctx); + free(data); } to = timeout; diff --git a/config_file_userdata.c b/config_file_userdata.c index e549af39a9..f4544c68a2 100644 --- a/config_file_userdata.c +++ b/config_file_userdata.c @@ -82,6 +82,7 @@ int config_userdata_get_float_array(void *userdata, const char *key_str, (*values)[i] = (float)strtod(list->elems[i].data, NULL); *out_num_values = list->size; string_list_free(list); + free(str); return true; } @@ -111,6 +112,7 @@ int config_userdata_get_int_array(void *userdata, const char *key_str, (*values)[i] = (int)strtod(list->elems[i].data, NULL); *out_num_values = list->size; string_list_free(list); + free(str); return true; } diff --git a/libretro-common/formats/png/rpng.c b/libretro-common/formats/png/rpng.c index 87e0887566..db6174bccb 100644 --- a/libretro-common/formats/png/rpng.c +++ b/libretro-common/formats/png/rpng.c @@ -783,7 +783,10 @@ static struct rpng_process *rpng_process_init(rpng_t *rpng, unsigned *width, uns process->stream = process->stream_backend->stream_new(); if (!process->stream) + { + free(process); return NULL; + } if (!process->stream_backend->stream_decompress_init(process->stream)) { diff --git a/libretro-db/libretrodb.c b/libretro-db/libretrodb.c index c34da06d40..9f1583b707 100644 --- a/libretro-db/libretrodb.c +++ b/libretro-db/libretrodb.c @@ -566,6 +566,7 @@ clean: if (cur.is_valid) libretrodb_cursor_close(&cur); bintree_free(tree); + free(tree); return 0; } diff --git a/patch.c b/patch.c index 809ecbf5d3..358ef81911 100644 --- a/patch.c +++ b/patch.c @@ -520,7 +520,10 @@ static bool apply_patch_content(uint8_t **buf, if (!filestream_read_file(patch_path, &patch_data, &patch_size)) return false; if (patch_size < 0) + { + free(patch_data); return false; + } if (!path_file_exists(patch_path)) { diff --git a/tasks/task_database_cue.c b/tasks/task_database_cue.c index 4aca11f407..30ad36e951 100644 --- a/tasks/task_database_cue.c +++ b/tasks/task_database_cue.c @@ -191,7 +191,10 @@ static int detect_ps1_game_sub(const char *track_path, tmp += *tmp; } if(tmp >= (buffer + 2048 * 2)) + { + filestream_close(fp); return 0; + } cd_sector = tmp[2] | (tmp[3] << 8) | (tmp[4] << 16); filestream_seek(fp, 13 + skip + cd_sector * frame_size, SEEK_SET);