1
0
Fork 0

(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

release/0.5
tron 2006-04-07 09:07:53 +00:00
parent 3ef6afdb4d
commit 10454a6dd1
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);