Fix potential heap buffer corruption due to Strgrow
If Str.length = 5 and area_size = 6, the result of Strgrow is still area_size = 6. For such case, Strcat_char and Strinsert_char will overflow one byte.
This commit is contained in:
4
Str.c
4
Str.c
@@ -232,8 +232,8 @@ Strgrow(Str x)
|
|||||||
{
|
{
|
||||||
char *old = x->ptr;
|
char *old = x->ptr;
|
||||||
int newlen;
|
int newlen;
|
||||||
newlen = x->length * 6 / 5;
|
newlen = x->area_size * 6 / 5;
|
||||||
if (newlen == x->length)
|
if (newlen == x->area_size)
|
||||||
newlen += 2;
|
newlen += 2;
|
||||||
x->ptr = GC_MALLOC_ATOMIC(newlen);
|
x->ptr = GC_MALLOC_ATOMIC(newlen);
|
||||||
x->area_size = newlen;
|
x->area_size = newlen;
|
||||||
|
Reference in New Issue
Block a user