diff options
author | pasky <pasky@openttd.org> | 2004-11-22 21:41:25 +0000 |
---|---|---|
committer | pasky <pasky@openttd.org> | 2004-11-22 21:41:25 +0000 |
commit | 3ee0dee12a06c26f0984028a1a56a3f3b240447f (patch) | |
tree | 4db8a64449865edaa93d47db6cc195f0d1893632 | |
parent | d4b723a7c9f653f134b33f1d7a130c6b996c1f75 (diff) | |
download | openttd-3ee0dee12a06c26f0984028a1a56a3f3b240447f.tar.xz |
(svn r767) Introduce USERSTRING_LEN (128) and try to make sure we don't overflow it anywhere (as long as we keep USERSTRING_LEN above 7 or so).
-rw-r--r-- | engine.c | 3 | ||||
-rw-r--r-- | misc_gui.c | 2 | ||||
-rw-r--r-- | station_gui.c | 2 | ||||
-rw-r--r-- | variables.h | 3 |
4 files changed, 7 insertions, 3 deletions
@@ -601,7 +601,8 @@ StringID GetCustomEngineName(int engine) { if (!_engine_custom_names[engine]) return _engine_name_strings[engine]; - strcpy(_userstring, _engine_custom_names[engine]); + strncpy(_userstring, _engine_custom_names[engine], USERSTRING_LEN); + _userstring[USERSTRING_LEN - 1] = '\0'; return STR_SPEC_USERSTRING; } diff --git a/misc_gui.c b/misc_gui.c index 7ca26c09e..8e1957c46 100644 --- a/misc_gui.c +++ b/misc_gui.c @@ -53,7 +53,7 @@ static void LandInfoWndProc(Window *w, WindowEvent *e) } DrawStringCentered(140, 38, str, 0); - sprintf(_userstring, "%.4X", lid->tile); + snprintf(_userstring, USERSTRING_LEN, "%.4X", lid->tile); SET_DPARAM16(0, GET_TILE_X(lid->tile)); SET_DPARAM16(1, GET_TILE_Y(lid->tile)); SET_DPARAM16(2, STR_SPEC_USERSTRING); diff --git a/station_gui.c b/station_gui.c index c0fca5411..9cbf0a66d 100644 --- a/station_gui.c +++ b/station_gui.c @@ -375,6 +375,8 @@ static void DrawStationViewWindow(Window *w) b += 3; for(i=0; i!=NUM_CARGO; i++) { + if (b + 5 > USERSTRING_LEN - 1) + break; if (st->goods[i].waiting_acceptance & 0x8000) { b[0] = 0x81; WRITE_LE_UINT16(b+1, _cargoc.names_s[i]); diff --git a/variables.h b/variables.h index c181af4bb..d96a8bd24 100644 --- a/variables.h +++ b/variables.h @@ -431,7 +431,8 @@ extern const TileIndexDiff _tileoffs_by_dir[4]; /* misc */ VARDEF byte str_buffr[512]; VARDEF char _screenshot_name[128]; -VARDEF char _userstring[128]; +#define USERSTRING_LEN 128 +VARDEF char _userstring[USERSTRING_LEN]; VARDEF byte _vehicle_design_names; VARDEF SignStruct _sign_list[40]; |