fix compilation without gperftools (#87)

* fix compilation without gperftools

the -ltcmalloc get pulled in by gperftools

* fix buffer overflow

This might not be the last one...

* fix potential buffer overflow

Some still remain because I'm unsure of their function.
Just simple fixes for now.

* fix even more potential overflows

Those need testing. It seems a lot variables are hardcoded there
but since it matches NAME_MAX it should be safe to use 255 as a
value.
This commit is contained in:
fogobogo 2017-04-21 10:15:33 +02:00 committed by Dimitris Panokostas
parent 4b6ecbaab7
commit f1b82ee041
6 changed files with 16 additions and 15 deletions

View file

@ -39,7 +39,7 @@ MORE_CFLAGS += -Isrc -Isrc/osdep -Isrc/threaddep -Isrc/include -Isrc/guisan/incl
MORE_CFLAGS += -Wno-unused -Wno-format -DGCCCONSTFUNC="__attribute__((const))"
MORE_CFLAGS += -fexceptions -fpermissive
LDFLAGS += -lpthread -lm -lz -lpng -lrt -lxml2 -lFLAC -lmpg123 -ldl
LDFLAGS += -lpthread -lm -lz -lpng -lrt -lxml2 -lFLAC -lmpg123 -ldl
LDFLAGS += -lSDL2 -lSDL2_image -lSDL2_ttf -lguisan -L/opt/vc/lib -Lsrc/guisan/lib
ifndef DEBUG
@ -48,6 +48,7 @@ else
MORE_CFLAGS += -g -DDEBUG -Wl,--export-dynamic
MORE_CFLAGS += -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free
LDFLAGS += -ltcmalloc -lprofiler
endif
ASFLAGS += $(CPU_FLAGS)

View file

@ -702,7 +702,7 @@ int main(int argc, char* argv[])
loadAdfDir();
rp9_init();
snprintf(savestate_fname, MAX_PATH, "%s/saves/default.ads", start_path_data);
snprintf(savestate_fname, MAX_DPATH, "%s/saves/default.ads", start_path_data);
logging_init();
memset(&action, 0, sizeof(action));

View file

@ -282,8 +282,8 @@ void RescanROMs()
for (int i = 0; i < files.size(); ++i)
{
char tmppath[MAX_PATH];
strncpy(tmppath, path, MAX_PATH);
strncat(tmppath, files[i].c_str(), MAX_PATH);
strncpy(tmppath, path, MAX_DPATH);
strncat(tmppath, files[i].c_str(), MAX_DPATH);
scan_rom(tmppath);
}
@ -510,7 +510,7 @@ void gui_purge_events()
int gui_update()
{
char tmp[MAX_PATH];
char tmp[MAX_DPATH];
fetch_statefilepath(savestate_fname, MAX_DPATH);
fetch_screenshotpath(screenshot_filename, MAX_DPATH);
@ -518,7 +518,7 @@ int gui_update()
if (strlen(currprefs.floppyslots[0].df) > 0)
extractFileName(currprefs.floppyslots[0].df, tmp);
else
strncpy(tmp, last_loaded_config, MAX_PATH);
strncpy(tmp, last_loaded_config, MAX_DPATH);
strncat(savestate_fname, tmp, MAX_DPATH);
strncat(screenshot_filename, tmp, MAX_DPATH);

View file

@ -103,7 +103,7 @@ public:
if (strlen(ConfigFilesList[i]->Description) > 0)
{
strncat(tmp, " (", MAX_DPATH);
strncat(tmp, ConfigFilesList[i]->Description, MAX_DPATH);
strncat(tmp, ConfigFilesList[i]->Description, 255);
strncat(tmp, ")", MAX_DPATH);
}
configs.push_back(tmp);
@ -151,9 +151,9 @@ public:
if (!txtName->getText().empty())
{
fetch_configurationpath(filename, MAX_DPATH);
strncat(filename, txtName->getText().c_str(), MAX_DPATH);
strncat(filename, txtName->getText().c_str(), 255);
strncat(filename, ".uae", MAX_DPATH);
strncpy(changed_prefs.description, txtDesc->getText().c_str(), 256);
strncpy(changed_prefs.description, txtDesc->getText().c_str(), 255);
if (cfgfile_save(&changed_prefs, filename, 0))
RefreshPanelConfig();
}

View file

@ -289,17 +289,17 @@ public:
//---------------------------------------
if (strlen(changed_prefs.floppyslots[0].df) > 0)
{
char filename[MAX_DPATH];
char diskname[MAX_PATH];
char filename[MAX_PATH];
char diskname[MAX_DPATH];
extractFileName(changed_prefs.floppyslots[0].df, diskname);
removeFileExtension(diskname);
fetch_configurationpath(filename, MAX_DPATH);
fetch_configurationpath(filename, MAX_PATH);
strncat(filename, diskname, MAX_DPATH);
strncat(filename, ".uae", MAX_DPATH);
strncat(filename, ".uae", MAX_PATH);
snprintf(changed_prefs.description, MAX_PATH, "Configuration for disk '%s'", diskname);
snprintf(changed_prefs.description, 255, "Configuration for disk '%s'", diskname);
if (cfgfile_save(&changed_prefs, filename, 0))
RefreshPanelConfig();
}

View file

@ -72,7 +72,7 @@ static bool CheckKickstart(struct uae_prefs* p)
// Search via filename
fetch_rompath(kickpath, MAX_DPATH);
strncat(kickpath, kickstarts_rom_names[kickstart], MAX_DPATH);
strncat(kickpath, kickstarts_rom_names[kickstart], 255);
for (i = 0; i < lstAvailableROMs.size(); ++i)
{
if (!strcasecmp(lstAvailableROMs[i]->Path, kickpath))