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 | 34bd9ee636b43d1851d27f92884769f8f25717be (patch) | |
tree | 8972c2c7b9b1ab7c2b41b46cd9a44f1bb0fbd9bd /src/fios.cpp | |
parent | 9c6d6c0d0edba265c73c04901d0f2155173407b8 (diff) | |
download | openttd-34bd9ee636b43d1851d27f92884769f8f25717be.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); } |