X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=backend.c;h=f28d863fe4888d1e8d5f56b4440fb46933b85d27;hb=38b85187a5d9972b1534f5cc4755eb875926cadb;hp=1a03a3f3ec5e77297e0e5709e4cc1408f2e69bf8;hpb=b8ccc2d03263c833777a7c055a372501b40bc7ce;p=xboard.git diff --git a/backend.c b/backend.c index 1a03a3f..f28d863 100644 --- a/backend.c +++ b/backend.c @@ -116,7 +116,7 @@ typedef struct { /* Search stats from chessprogram */ typedef struct { - char movelist[MSG_SIZ]; /* Last PV we were sent */ + char movelist[2*MSG_SIZ]; /* Last PV we were sent */ int depth; /* Current search depth */ int nr_moves; /* Total nr of root moves */ int moves_left; /* Moves remaining to be searched */ @@ -1455,6 +1455,16 @@ read_from_ics(isr, closure, data, count, error) int tkind; char *p; +#ifdef WIN32 + if (appData.debugMode) { + if (!error) { + fprintf(debugFP, " 0) { /* If last read ended with a partial line that we couldn't parse, prepend it to the new read and try again. */ @@ -3907,7 +3917,7 @@ HandleMachineMove(message, cps) * Look for communication commands */ if (!strncmp(message, "telluser ", 9)) { - DisplayInformation(message + 9); + DisplayNote(message + 9); return; } if (!strncmp(message, "tellusererror ", 14)) { @@ -3921,7 +3931,7 @@ HandleMachineMove(message, cps) SendToICS(buf1); } } else { - DisplayInformation(message + 13); + DisplayNote(message + 13); } return; } @@ -3941,7 +3951,7 @@ HandleMachineMove(message, cps) SendToICS(buf1); } } else { - DisplayInformation(message + 8); + DisplayNote(message + 8); } return; } @@ -4349,9 +4359,24 @@ HandleMachineMove(message, cps) programStats.nodes = nodes; programStats.time = time; programStats.score = curscore; - strcpy(programStats.movelist, buf1); programStats.got_only_move = 0; + /* Buffer overflow protection */ + if (buf1[0] != NULLCHAR) { + if (strlen(buf1) >= sizeof(programStats.movelist) + && appData.debugMode) { + fprintf(debugFP, + "PV is too long; using the first %d bytes.\n", + sizeof(programStats.movelist) - 1); + } + strncpy(programStats.movelist, buf1, + sizeof(programStats.movelist)); + programStats.movelist[sizeof(programStats.movelist) - 1] + = NULLCHAR; + } else { + sprintf(programStats.movelist, " no PV\n"); + } + if (programStats.seen_stat) { programStats.ok_to_send = 1; } @@ -6792,7 +6817,7 @@ ReloadCmailMsgEvent(unregister) /* Load first game in the file or popup game menu */ LoadGameFromFile(inFilename, 0, appData.cmailGameName, TRUE); -#endif // !WIN32 +#endif /* !WIN32 */ return; } @@ -6972,7 +6997,7 @@ MailMoveEvent() } return; -#endif // !WIN32 +#endif /* !WIN32 */ } char * @@ -7050,7 +7075,7 @@ CmailMsg() } } return cmailMsg; -#endif // WIN32 +#endif /* WIN32 */ } void