From 6a47669d2182f52019dfa8d8a07595b283f4e4e4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 23 Jan 2018 03:41:25 +0100 Subject: [PATCH] Prevent some heap corruptions/exceptions --- libretro-common/compat/fopen_utf8.c | 3 ++- libretro-common/formats/png/rpng.c | 2 +- libretro-common/streams/trans_stream_zlib.c | 3 ++- menu/drivers/xmb.c | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libretro-common/compat/fopen_utf8.c b/libretro-common/compat/fopen_utf8.c index 65fa4c9dc8..abd50cf275 100644 --- a/libretro-common/compat/fopen_utf8.c +++ b/libretro-common/compat/fopen_utf8.c @@ -22,7 +22,8 @@ FILE* fopen_utf8(const char * filename, const char * mode) if (!filename_local) return NULL; ret = fopen(filename_local, mode); - free(filename_local); + if (filename_local) + free(filename_local); return ret; #else wchar_t * filename_w = utf8_to_utf16_string_alloc(filename); diff --git a/libretro-common/formats/png/rpng.c b/libretro-common/formats/png/rpng.c index c316ea28f0..b9010c1320 100644 --- a/libretro-common/formats/png/rpng.c +++ b/libretro-common/formats/png/rpng.c @@ -1220,7 +1220,7 @@ bool rpng_set_buf_ptr(rpng_t *rpng, void *data) rpng_t *rpng_alloc(void) { - rpng_t *rpng = (rpng_t*)calloc(1, sizeof(rpng_t)); + rpng_t *rpng = (rpng_t*)calloc(1, sizeof(*rpng)); if (!rpng) return NULL; return rpng; diff --git a/libretro-common/streams/trans_stream_zlib.c b/libretro-common/streams/trans_stream_zlib.c index d37e6b9713..ec350119ca 100644 --- a/libretro-common/streams/trans_stream_zlib.c +++ b/libretro-common/streams/trans_stream_zlib.c @@ -69,7 +69,8 @@ static void zlib_inflate_stream_free(void *data) return; if (z->inited) inflateEnd(&z->z); - free(z); + if (z) + free(z); } static bool zlib_deflate_define(void *data, const char *prop, uint32_t val) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 54d8d784b8..03cd69a6f4 100755 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -3893,7 +3893,8 @@ static void xmb_context_reset(void *data, bool is_threaded) xmb_update_thumbnail_image(xmb); xmb_update_savestate_thumbnail_image(xmb); - free(iconpath); + if (iconpath) + free(iconpath); } }