36 lines
880 B
Diff
36 lines
880 B
Diff
|
commit 724fd07a67f135c74eba57e9f25fd342201ec722
|
||
|
Author: Peter Stephenson <pws@users.sourceforge.net>
|
||
|
Date: Sat Dec 3 17:24:45 2011 +0000
|
||
|
|
||
|
29934: Stef van Vlierberghe: uninitialised memory after lexer realloc
|
||
|
|
||
|
diff --git a/Src/lex.c b/Src/lex.c
|
||
|
index 90c4eff..05f54f8 100644
|
||
|
--- a/Src/lex.c
|
||
|
+++ b/Src/lex.c
|
||
|
@@ -567,22 +567,14 @@ add(int c)
|
||
|
{
|
||
|
*bptr++ = c;
|
||
|
if (bsiz == ++len) {
|
||
|
-#if 0
|
||
|
- int newbsiz;
|
||
|
-
|
||
|
- newbsiz = bsiz * 8;
|
||
|
- while (newbsiz < inbufct)
|
||
|
- newbsiz *= 2;
|
||
|
- bptr = len + (tokstr = (char *)hrealloc(tokstr, bsiz, newbsiz));
|
||
|
- bsiz = newbsiz;
|
||
|
-#endif
|
||
|
-
|
||
|
int newbsiz = bsiz * 2;
|
||
|
|
||
|
if (newbsiz > inbufct && inbufct > bsiz)
|
||
|
newbsiz = inbufct;
|
||
|
|
||
|
bptr = len + (tokstr = (char *)hrealloc(tokstr, bsiz, newbsiz));
|
||
|
+ /* len == bsiz, so bptr is at the start of newly allocated memory */
|
||
|
+ memset(bptr, 0, newbsiz - bsiz);
|
||
|
bsiz = newbsiz;
|
||
|
}
|
||
|
}
|