diff --git a/src/Util.cpp b/src/Util.cpp index 1b470c67..5c15e7e0 100644 --- a/src/Util.cpp +++ b/src/Util.cpp @@ -60,6 +60,8 @@ static int(ZEXPORT *utilGzReadFunc)(gzFile, voidp, unsigned int) = NULL; static int(ZEXPORT *utilGzCloseFunc)(gzFile) = NULL; static z_off_t(ZEXPORT *utilGzSeekFunc)(gzFile, z_off_t, int) = NULL; +#define MAX_CART_SIZE 0x2000000 // 32MB + bool FileExists(const char *filename) { #ifdef _WIN32 @@ -586,6 +588,9 @@ uint8_t *utilLoad(const char *file, bool (*accept)(const char *), uint8_t *data, if (size == 0) size = fileSize; + if (size > MAX_CART_SIZE) + return NULL; + uint8_t *image = data; if (image == NULL) {