imgread/common.cpp: Add buffer size checks in case buffer size are changed later

This commit is contained in:
Jan Holthuis 2016-02-22 18:38:57 +01:00
parent 1a809fc60e
commit b106efde5f
1 changed files with 18 additions and 4 deletions

View File

@ -178,8 +178,11 @@ bool InitDrive(u32 fileflags)
return true;
}
// FIXME: Data loss if buffer is too small
wchar fn[512];
strcpy(fn,settings.imgread.LastImage);
strncpy(fn,settings.imgread.LastImage, sizeof(fn));
fn[sizeof(fn) - 1] = '\0';
#ifdef BUILD_DREAMCAST
int gfrv=GetFile(fn,0,fileflags);
#else
@ -199,7 +202,10 @@ bool InitDrive(u32 fileflags)
return false;
}
strcpy(settings.imgread.LastImage,fn);
// FIXME: Data loss if buffer is too small
strncpy(settings.imgread.LastImage, fn, sizeof(settings.imgread.LastImage));
settings.imgread.LastImage[sizeof(settings.imgread.LastImage) - 1] = '\0';
SaveSettings();
if (!InitDrive_(fn))
@ -232,8 +238,12 @@ bool DiscSwap(u32 fileflags)
return true;
}
// FIXME: Data loss if buffer is too small
wchar fn[512];
strcpy(fn,settings.imgread.LastImage);
strncpy(fn, settings.imgread.LastImage, sizeof(fn));
fn[sizeof(fn) - 1] = '\0';
#ifdef BUILD_DREAMCAST
int gfrv=GetFile(fn,0,fileflags);
#else
@ -256,7 +266,11 @@ bool DiscSwap(u32 fileflags)
return false;
}
strcpy(settings.imgread.LastImage,fn);
// FIXME: Data loss if buffer is too small
strncpy(settings.imgread.LastImage, fn, sizeof(settings.imgread.LastImage));
settings.imgread.LastImage[sizeof(settings.imgread.LastImage) - 1] = '\0';
SaveSettings();
if (!InitDrive_(fn))