mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Fix possible integer overflow while running PRAGMA integrity_check on a
database file with a badly corrupted freelist. FossilOrigin-Name: 395599116d801324f0763e59bc5e2fc8622aa5b7572e0c1c9a982efbb3cc8280
This commit is contained in:
@@ -9414,18 +9414,18 @@ static void checkList(
|
||||
}
|
||||
pOvflData = (unsigned char *)sqlite3PagerGetData(pOvflPage);
|
||||
if( isFreeList ){
|
||||
int n = get4byte(&pOvflData[4]);
|
||||
u32 n = (u32)get4byte(&pOvflData[4]);
|
||||
#ifndef SQLITE_OMIT_AUTOVACUUM
|
||||
if( pCheck->pBt->autoVacuum ){
|
||||
checkPtrmap(pCheck, iPage, PTRMAP_FREEPAGE, 0);
|
||||
}
|
||||
#endif
|
||||
if( n>(int)pCheck->pBt->usableSize/4-2 ){
|
||||
if( n>pCheck->pBt->usableSize/4-2 ){
|
||||
checkAppendMsg(pCheck,
|
||||
"freelist leaf count too big on page %d", iPage);
|
||||
N--;
|
||||
}else{
|
||||
for(i=0; i<n; i++){
|
||||
for(i=0; i<(int)n; i++){
|
||||
Pgno iFreePage = get4byte(&pOvflData[8+i*4]);
|
||||
#ifndef SQLITE_OMIT_AUTOVACUUM
|
||||
if( pCheck->pBt->autoVacuum ){
|
||||
|
Reference in New Issue
Block a user