(svn r4314) -Fix: a buffer overflow of the chat box introduced in r1263. Don't tell the Textbuf an arbitrary number as size of the string buffer, but the real lengthof() it

This commit is contained in:
tron
2006-04-07 09:07:53 +00:00
parent 59f0e69521
commit 0099dc31f5
3 changed files with 4 additions and 4 deletions

2
gui.h
View File

@@ -124,7 +124,7 @@ extern const byte _fios_colors[];
/* network gui */ /* network gui */
void ShowNetworkGameWindow(void); void ShowNetworkGameWindow(void);
void ShowChatWindow(int maxlen); void ShowChatWindow(void);
/* bridge_gui.c */ /* bridge_gui.c */
void ShowBuildBridgeWindow(uint start, uint end, byte type); void ShowBuildBridgeWindow(uint start, uint end, byte type);

View File

@@ -332,7 +332,7 @@ void ShowNetworkChatQueryWindow(byte desttype, byte dest)
{ {
_rename_id = desttype + (dest << 8); _rename_id = desttype + (dest << 8);
_rename_what = 2; _rename_what = 2;
ShowChatWindow(150); ShowChatWindow();
} }
void ShowNetworkGiveMoneyWindow(byte player) void ShowNetworkGiveMoneyWindow(byte player)

View File

@@ -1545,7 +1545,7 @@ static const WindowDesc _chat_window_desc = {
ChatWindowWndProc ChatWindowWndProc
}; };
void ShowChatWindow(int maxlen) void ShowChatWindow(void)
{ {
Window *w; Window *w;
@@ -1560,7 +1560,7 @@ void ShowChatWindow(int maxlen)
WP(w,querystr_d).wnd_class = WC_MAIN_TOOLBAR; WP(w,querystr_d).wnd_class = WC_MAIN_TOOLBAR;
WP(w,querystr_d).wnd_num = 0; WP(w,querystr_d).wnd_num = 0;
WP(w,querystr_d).text.caret = false; WP(w,querystr_d).text.caret = false;
WP(w,querystr_d).text.maxlength = maxlen; WP(w,querystr_d).text.maxlength = lengthof(_edit_str_buf);
WP(w,querystr_d).text.maxwidth = w->widget[1].right - w->widget[1].left - 2; // widget[1] is the "text box" WP(w,querystr_d).text.maxwidth = w->widget[1].right - w->widget[1].left - 2; // widget[1] is the "text box"
WP(w,querystr_d).text.buf = _edit_str_buf; WP(w,querystr_d).text.buf = _edit_str_buf;
UpdateTextBufferSize(&WP(w, querystr_d).text); UpdateTextBufferSize(&WP(w, querystr_d).text);