diff options
author | peter1138 <peter1138@openttd.org> | 2006-01-31 12:08:49 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2006-01-31 12:08:49 +0000 |
commit | 0ad6dc9cc246d71920aec028616fd21994967788 (patch) | |
tree | fb209c59882db9fea045debd6dbd9b5ce7a9f708 | |
parent | ee889951eaa71290a5caab7d0987a238357f5090 (diff) | |
download | openttd-0ad6dc9cc246d71920aec028616fd21994967788.tar.xz |
(svn r3496) - Validate filename titles before they get displayed. This avoids crashes with UTF-8 encoded or bad filenames by replacing undisplayable characters with a '?'
-rw-r--r-- | os2.c | 4 | ||||
-rw-r--r-- | unix.c | 4 | ||||
-rw-r--r-- | win32.c | 4 |
3 files changed, 12 insertions, 0 deletions
@@ -109,6 +109,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode) fios->mtime = 0; ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name)); snprintf(fios->title, lengthof(fios->title), "%s\\ (Directory)", dirent->d_name); + str_validate(fios->title); } } closedir(dir); @@ -150,6 +151,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode) *t = '\0'; // strip extension ttd_strlcpy(fios->title, dirent->d_name, lengthof(fios->title)); + str_validate(fios->title); } else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) { if (strcasecmp(t, ".ss1") == 0 || strcasecmp(t, ".sv1") == 0 || @@ -236,6 +238,7 @@ FiosItem *FiosGetScenarioList(int *num, int mode) fios->mtime = 0; ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name)); snprintf(fios->title, lengthof(fios->title), "%s\\ (Directory)", dirent->d_name); + str_validate(fios->title); } } closedir(dir); @@ -276,6 +279,7 @@ FiosItem *FiosGetScenarioList(int *num, int mode) *t = '\0'; // strip extension ttd_strlcpy(fios->title, dirent->d_name, lengthof(fios->title)); + str_validate(fios->title); } else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO || mode == SLD_NEW_GAME) { if (strcasecmp(t, ".sv0") == 0 || @@ -121,6 +121,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode) ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name)); snprintf(fios->title, lengthof(fios->title), "%s/ (Directory)", dirent->d_name); + str_validate(fios->title); } } closedir(dir); @@ -163,6 +164,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode) *t = '\0'; // strip extension ttd_strlcpy(fios->title, dirent->d_name, lengthof(fios->title)); + str_validate(fios->title); } else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) { if (strcasecmp(t, ".ss1") == 0 || strcasecmp(t, ".sv1") == 0 || @@ -222,6 +224,7 @@ FiosItem *FiosGetScenarioList(int *num, int mode) fios->mtime = 0; ttd_strlcpy(fios->name, dirent->d_name, lengthof(fios->name)); snprintf(fios->title, lengthof(fios->title), "%s/ (Directory)", dirent->d_name); + str_validate(fios->title); } } closedir(dir); @@ -262,6 +265,7 @@ FiosItem *FiosGetScenarioList(int *num, int mode) *t = '\0'; // strip extension ttd_strlcpy(fios->title, dirent->d_name, lengthof(fios->title)); + str_validate(fios->title); } else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO || mode == SLD_NEW_GAME) { if (strcasecmp(t, ".sv0") == 0 || @@ -686,6 +686,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode) fios->mtime = 0; ttd_strlcpy(fios->name, fd.cFileName, lengthof(fios->name)); snprintf(fios->title, lengthof(fios->title), "%s\\ (Directory)", fd.cFileName); + str_validate(fios->title); } } while (FindNextFile(h, &fd)); FindClose(h); @@ -726,6 +727,7 @@ FiosItem *FiosGetSavegameList(int *num, int mode) *t = '\0'; // strip extension ttd_strlcpy(fios->title, fd.cFileName, lengthof(fios->title)); + str_validate(fios->title); } else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) { if (strcasecmp(t, ".ss1") == 0 || strcasecmp(t, ".sv1") == 0 || @@ -800,6 +802,7 @@ FiosItem *FiosGetScenarioList(int *num, int mode) fios->mtime = 0; ttd_strlcpy(fios->name, fd.cFileName, lengthof(fios->name)); snprintf(fios->title, lengthof(fios->title), "%s\\ (Directory)", fd.cFileName); + str_validate(fios->title); } } while (FindNextFile(h, &fd)); FindClose(h); @@ -839,6 +842,7 @@ FiosItem *FiosGetScenarioList(int *num, int mode) *t = '\0'; // strip extension ttd_strlcpy(fios->title, fd.cFileName, lengthof(fios->title)); + str_validate(fios->title); } else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO || mode == SLD_NEW_GAME) { if (strcasecmp(t, ".sv0") == 0 || |