mirror of
https://github.com/dborth/fceugx.git
synced 2024-10-31 22:45:05 +01:00
prevent overrunning the file buffer (eg: loading a game cover image
that's too big)
This commit is contained in:
parent
3e07d0cfe3
commit
99498882a5
@ -410,19 +410,19 @@ int main(int argc, char *argv[])
|
|||||||
InitialiseAudio();
|
InitialiseAudio();
|
||||||
InitFreeType((u8*)font_ttf, font_ttf_size); // Initialize font system
|
InitFreeType((u8*)font_ttf, font_ttf_size); // Initialize font system
|
||||||
#ifdef USE_VM
|
#ifdef USE_VM
|
||||||
|
savebuffer = (unsigned char *)vm_malloc(SAVEBUFFERSIZE);
|
||||||
|
browserList = (BROWSERENTRY *)vm_malloc(sizeof(BROWSERENTRY)*MAX_BROWSER_SIZE);
|
||||||
gameScreenPng = (u8 *)vm_malloc(512*1024);
|
gameScreenPng = (u8 *)vm_malloc(512*1024);
|
||||||
|
nesrom = (unsigned char *)vm_malloc(1024*1024*4);
|
||||||
#else
|
#else
|
||||||
gameScreenPng = (u8 *)malloc(512*1024);
|
savebuffer = (unsigned char *)memalign(32,SAVEBUFFERSIZE);
|
||||||
|
browserList = (BROWSERENTRY *)memalign(32,sizeof(BROWSERENTRY)*MAX_BROWSER_SIZE);
|
||||||
|
gameScreenPng = (u8 *)memalign(32,512*1024);
|
||||||
|
nesrom = (unsigned char *)memalign(32,1024*1024*4);
|
||||||
#endif
|
#endif
|
||||||
browserList = (BROWSERENTRY *)malloc(sizeof(BROWSERENTRY)*MAX_BROWSER_SIZE);
|
|
||||||
InitGUIThreads();
|
InitGUIThreads();
|
||||||
|
|
||||||
// allocate memory to store rom
|
|
||||||
#ifdef USE_VM
|
|
||||||
nesrom = (unsigned char *)vm_malloc(1024*1024*4); // 4 MB should be plenty
|
|
||||||
#else
|
|
||||||
nesrom = (unsigned char *)memalign(32,1024*1024*4); // 4 MB should be plenty
|
|
||||||
#endif
|
|
||||||
/*** Minimal Emulation Loop ***/
|
/*** Minimal Emulation Loop ***/
|
||||||
if (!FCEUI_Initialize())
|
if (!FCEUI_Initialize())
|
||||||
ExitApp();
|
ExitApp();
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
#define THREAD_SLEEP 100
|
#define THREAD_SLEEP 100
|
||||||
|
|
||||||
unsigned char savebuffer[SAVEBUFFERSIZE] ATTRIBUTE_ALIGN(32);
|
unsigned char *savebuffer = NULL;
|
||||||
static mutex_t bufferLock = LWP_MUTEX_NULL;
|
static mutex_t bufferLock = LWP_MUTEX_NULL;
|
||||||
FILE * file; // file pointer - the only one we should ever use!
|
FILE * file; // file pointer - the only one we should ever use!
|
||||||
bool unmountRequired[7] = { false, false, false, false, false, false, false };
|
bool unmountRequired[7] = { false, false, false, false, false, false, false };
|
||||||
@ -863,6 +863,18 @@ LoadFile (char * rbuffer, char *filepath, size_t length, bool silent)
|
|||||||
|
|
||||||
size_t LoadFile(char * filepath, bool silent)
|
size_t LoadFile(char * filepath, bool silent)
|
||||||
{
|
{
|
||||||
|
struct stat filestat;
|
||||||
|
|
||||||
|
if(stat(filepath, &filestat) != 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int size = filestat.st_size;
|
||||||
|
|
||||||
|
if(size >= SAVEBUFFERSIZE) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return LoadFile((char *)savebuffer, filepath, 0, silent);
|
return LoadFile((char *)savebuffer, filepath, 0, silent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ size_t LoadSzFile(char * filepath, unsigned char * rbuffer);
|
|||||||
size_t SaveFile(char * buffer, char *filepath, size_t datasize, bool silent);
|
size_t SaveFile(char * buffer, char *filepath, size_t datasize, bool silent);
|
||||||
size_t SaveFile(char * filepath, size_t datasize, bool silent);
|
size_t SaveFile(char * filepath, size_t datasize, bool silent);
|
||||||
|
|
||||||
extern unsigned char savebuffer[];
|
extern unsigned char *savebuffer;
|
||||||
extern FILE * file;
|
extern FILE * file;
|
||||||
extern bool unmountRequired[];
|
extern bool unmountRequired[];
|
||||||
extern bool isMounted[];
|
extern bool isMounted[];
|
||||||
|
Loading…
Reference in New Issue
Block a user