diff options
author | rubidium <rubidium@openttd.org> | 2009-03-06 01:23:25 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-03-06 01:23:25 +0000 |
commit | 86ca408d469811d13a15d5c7a671feda38126eb0 (patch) | |
tree | 8972c2c7b9b1ab7c2b41b46cd9a44f1bb0fbd9bd /src/fios.cpp | |
parent | c3a7e6b693716232fd2aefab3f36bd555620b563 (diff) | |
download | openttd-86ca408d469811d13a15d5c7a671feda38126eb0.tar.xz |
(svn r15626) -Fix [FS#2698]: UTF8 string handling could cause buffer overruns.
Diffstat (limited to 'src/fios.cpp')
-rw-r--r-- | src/fios.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/fios.cpp b/src/fios.cpp index 11ecd7941..3fb5dabe4 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -247,7 +247,7 @@ bool FiosFileScanner::AddFile(const char *filename, size_t basepath_length) t = (t == NULL) ? filename : (t + 1); } strecpy(fios->title, t, lastof(fios->title)); - str_validate(fios->title); + str_validate(fios->title, lastof(fios->title)); return true; } @@ -292,7 +292,7 @@ static void FiosGetFileList(SaveLoadDialogMode mode, fios_getlist_callback_proc fios->mtime = 0; strecpy(fios->name, d_name, lastof(fios->name)); snprintf(fios->title, lengthof(fios->title), "%s" PATHSEP " (Directory)", d_name); - str_validate(fios->title); + str_validate(fios->title, lastof(fios->title)); } } closedir(dir); @@ -344,6 +344,7 @@ static void GetFileTitle(const char *file, char *title, const char *last) size_t read = fread(title, 1, last - title, f); assert(title + read <= last); title[read] = '\0'; + str_validate(title, last); FioFCloseFile(f); } |