From 821ca0247470bd3c89d25b47b41a875460d8a5d0 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Sat, 31 Dec 2016 01:56:52 -0500 Subject: [PATCH] allocate enough space for NUL, and do not try to open an empty file string --- src/drivers/libretro/libretro.c | 5 ++++- src/general.c | 5 +++-- src/state.c | 10 ++++++++-- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/drivers/libretro/libretro.c b/src/drivers/libretro/libretro.c index d281603..526444a 100644 --- a/src/drivers/libretro/libretro.c +++ b/src/drivers/libretro/libretro.c @@ -172,7 +172,10 @@ void FCEUD_VideoChanged (void) FILE *FCEUD_UTF8fopen(const char *n, const char *m) { - return fopen(n, m); + if (n) + return fopen(n, m); + else + return NULL; } #define MAX_PATH 1024 diff --git a/src/general.c b/src/general.c index 9352825..b92271a 100644 --- a/src/general.c +++ b/src/general.c @@ -91,8 +91,9 @@ char *FCEU_MakeFName(int type, int id1, char *cd1) break; } - ret = (char*)malloc(strlen(tmp) * sizeof(char)); - strncpy(ret, tmp, strlen(tmp)); + ret = (char*)malloc(strlen(tmp) * sizeof(char) + 1); + strncpy(ret, tmp, strlen(tmp) + 1); + return(ret); } diff --git a/src/state.c b/src/state.c index 945b7a7..46bc4a3 100644 --- a/src/state.c +++ b/src/state.c @@ -324,8 +324,14 @@ void FCEUSS_CheckStates(void) for (ssel = 0; ssel < 10; ssel++) { - st = fopen(fn = FCEU_MakeFName(FCEUMKF_STATE, ssel, 0), "rb"); - free(fn); + fn = FCEU_MakeFName(FCEUMKF_STATE, ssel, 0); + + if (fn) + { + st = fopen(fn, "rb"); + free(fn); + } + if (st) { SaveStateStatus[ssel] = 1;