From e433631c9b9449829b54526e0d0ebaeec71b270a Mon Sep 17 00:00:00 2001 From: Tim Mann Date: Sat, 28 May 2011 21:01:25 -0700 Subject: [PATCH] Fix a size mismatch in scanf. Untested, but the code could not have worked properly without this fix -- scanf would have written 32-bit values to 16-bit fields, thus smashing adjacent memory. --- book.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/book.c b/book.c index 3a764b9..5c5eea6 100644 --- a/book.c +++ b/book.c @@ -585,7 +585,7 @@ int TextToMoves(char *text, int moveNum, entry_t *entries) valid = ParseOneMove(text, moveNum, &moveType, &fromX, &fromY, &toX, &toY, &promoChar); text = strstr(text, yy_textstr) + strlen(yy_textstr); // skip what we parsed if(!valid || moveType != NormalMove) continue; - if(*text == ' ' && sscanf(text+1, "{%d/%d}", &entries[count].learnPoints, &entries[count].learnCount) == 2) { + if(*text == ' ' && sscanf(text+1, "{%hd/%hd}", &entries[count].learnPoints, &entries[count].learnCount) == 2) { text = strchr(text+1, '}') + 1; } else { entries[count].learnPoints = 0; -- 1.7.0.4