summaryrefslogtreecommitdiff
path: root/src/fios.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-03-06 01:23:25 +0000
committerrubidium <rubidium@openttd.org>2009-03-06 01:23:25 +0000
commit86ca408d469811d13a15d5c7a671feda38126eb0 (patch)
tree8972c2c7b9b1ab7c2b41b46cd9a44f1bb0fbd9bd /src/fios.cpp
parentc3a7e6b693716232fd2aefab3f36bd555620b563 (diff)
downloadopenttd-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.cpp5
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);
}