Fix two integer overflows
This commit is contained in:
committed by
Vadim Zeitlin
parent
0f0c5aa731
commit
a4d77355e3
@@ -6265,8 +6265,13 @@ poolGrow(STRING_POOL *pool)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pool->blocks && pool->start == pool->blocks->s) {
|
if (pool->blocks && pool->start == pool->blocks->s) {
|
||||||
|
BLOCK *temp;
|
||||||
int blockSize = (int)(pool->end - pool->start)*2;
|
int blockSize = (int)(pool->end - pool->start)*2;
|
||||||
BLOCK *temp = (BLOCK *)
|
|
||||||
|
if (blockSize < 0)
|
||||||
|
return XML_FALSE;
|
||||||
|
|
||||||
|
temp = (BLOCK *)
|
||||||
pool->mem->realloc_fcn(pool->blocks,
|
pool->mem->realloc_fcn(pool->blocks,
|
||||||
(offsetof(BLOCK, s)
|
(offsetof(BLOCK, s)
|
||||||
+ blockSize * sizeof(XML_Char)));
|
+ blockSize * sizeof(XML_Char)));
|
||||||
@@ -6281,6 +6286,10 @@ poolGrow(STRING_POOL *pool)
|
|||||||
else {
|
else {
|
||||||
BLOCK *tem;
|
BLOCK *tem;
|
||||||
int blockSize = (int)(pool->end - pool->start);
|
int blockSize = (int)(pool->end - pool->start);
|
||||||
|
|
||||||
|
if (blockSize < 0)
|
||||||
|
return XML_FALSE;
|
||||||
|
|
||||||
if (blockSize < INIT_BLOCK_SIZE)
|
if (blockSize < INIT_BLOCK_SIZE)
|
||||||
blockSize = INIT_BLOCK_SIZE;
|
blockSize = INIT_BLOCK_SIZE;
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user