blob: a50ba0227838685eb69da4436004aa4a23d6c503 [file] [log] [blame]
Change 171343973 by lbaudoin@lbaudoin:hunspell-crash:6404:citc on 2017/10/06 14:25:31
Fix a buffer overflow in hunspell.
Also tested manually against the hunspell 1.3.4 test suite.
PRESUBMIT=passed
BUG=67454984
FIXED=67454984
R=lianglin
CC=asergeev,gmail-security+reviews
APPROVED=lianglin
REQUIRED_REVIEW=1
DELTA_BY_EXTENSION=cxx=3
OCL=171341547
Affected files ...
... //depot//src/hunspell/affentry.cxx#3 edit
==== //depot//src/hunspell/affentry.cxx#2 - /google/src/files/171343973/depot//src/hunspell/affentry.cxx ====
--- /google/src/files/49864191/depot//src/hunspell/affentry.cxx 2013-07-24 23:12:12.000000000 -0400
+++ /google/src/files/171343973/depot//src/hunspell/affentry.cxx 2017-10-06 17:25:31.000000000 -0400
@@ -586,7 +586,8 @@
// it checked in test_condition()
if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) &&
- (tmpl + stripl >= numconds)) {
+ (tmpl + stripl >= numconds) &&
+ (len < sizeof(tmpword))) {
// generate new root word by removing suffix and adding
// back any characters that would have been stripped or
@@ -594,7 +595,7 @@
strcpy (tmpword, word);
cp = (unsigned char *)(tmpword + tmpl);
- if (stripl) {
+ if (stripl && len + stripl < sizeof(tmpword)) {
strcpy ((char *)cp, strip);
tmpl += stripl;
cp = (unsigned char *)(tmpword + tmpl);