security fix: replaced strcpy with safeStrCpy from backend.c
[xboard.git] / winboard / wchat.c
index 30b6aa5..1f78605 100644 (file)
@@ -189,6 +189,7 @@ LRESULT CALLBACK ChatProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam
 \r
     switch (message) {\r
     case WM_INITDIALOG:\r
+        Translate(hDlg, DLG_Chat);\r
        if(partner<0) {\r
                for(i=0; i<MAX_CHAT; i++) if(chatHandle[i] == NULL) { partner = i; break; }\r
                chatHandle[partner] = hDlg;\r
@@ -364,7 +365,8 @@ void ChatPopUp(char *icsHandle)
   for(i=0; i<MAX_CHAT; i++) if(chatHandle[i] == NULL) { partner = i; break; }\r
   if(partner == -1) { DisplayError("You first have to close a Chat Box\nbefore you can open a new one", 0); return; }\r
   if(icsHandle) // [HGM] clickbox set handle in advance\r
-       strcpy(chatPartner[partner], icsHandle);\r
+    safeStrCpy(chatPartner[partner], icsHandle, \r
+              sizeof(chatPartner[partner])/sizeof(chatPartner[partner][0]) );\r
   else chatPartner[partner][0] = NULLCHAR;\r
   chatCount++;\r
 \r
@@ -389,10 +391,9 @@ void ChatPopDown()
 \r
 void OutputChatMessage(int partner, char *text)\r
 {\r
-       int j;\r
-       if(!chatHandle[partner]) return;\r
+       int j, n = strlen(text);\r
 \r
-       int n = strlen(text);\r
+       if(!chatHandle[partner]) return;\r
        text[n+1] = 0; text[n] = '\n'; text[n-1] = '\r'; // Needs CR to not lose line breaks on copy-paste\r
        InsertIntoMemo(chatHandle[partner], text);\r
        if(partner != onTop) for(j=0; j<MAX_CHAT; j++) if(j != partner && chatHandle[j])\r