From: dan Date: Mon, 1 Apr 2013 14:29:33 +0000 (+0000) Subject: Fix a problem in btree.c that could cause a crash following an OOM. X-Git-Tag: version-3.7.17~114^2~34 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=71be5c5c876747be8a8352170519271a20b7ca9f;p=thirdparty%2Fsqlite.git Fix a problem in btree.c that could cause a crash following an OOM. FossilOrigin-Name: b724aa5889f2e09cf0cbef133a672e6486755104 --- diff --git a/manifest b/manifest index 715e199440..8a6c9f5c8d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\scomment\sin\sos_unix.c.\s\sNo\scode\schanges. -D 2013-03-26T18:48:11.374 +C Fix\sa\sproblem\sin\sbtree.c\sthat\scould\scause\sa\scrash\sfollowing\san\sOOM. +D 2013-04-01T14:29:33.960 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in df3e48659d80e1b7765785d8d66c86b320f72cc7 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -121,7 +121,7 @@ F src/auth.c 523da7fb4979469955d822ff9298352d6b31de34 F src/backup.c b2cac9f7993f3f9588827b824b1501d0c820fa68 F src/bitvec.c 19a4ba637bd85f8f63fc8c9bae5ade9fb05ec1cb F src/btmutex.c 976f45a12e37293e32cae0281b15a21d48a8aaa7 -F src/btree.c 19b587b32569d4b92651b5eaa9de2e59c6f8f704 +F src/btree.c 84c9a4a20b827a6f7dbcbcda59607dbee57af446 F src/btree.h d9490cd37aaeb530a41b07f06e1262950b1be916 F src/btreeInt.h eecc84f02375b2bb7a44abbcbbe3747dde73edb2 F src/build.c 083da8466fd7e481cb8bd5264398f537507f6176 @@ -1040,7 +1040,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac -P 611bd824c24a60d298f28705de323fa2e813a308 -R 8f591838a5bc479ac7493be19f46439f -U drh -Z be06b34348d93c4a77e7034db0a8802f +P 72813b8ec924b91583c679668f7c4561dff82a02 +R ff1f51b04ee42accb0ddfde388849db6 +U dan +Z fbb073bc333f3d3b9c496b3226200b28 diff --git a/manifest.uuid b/manifest.uuid index 855425c986..069c9bb2ee 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -72813b8ec924b91583c679668f7c4561dff82a02 \ No newline at end of file +b724aa5889f2e09cf0cbef133a672e6486755104 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 7d2f2d3840..03764a9267 100644 --- a/src/btree.c +++ b/src/btree.c @@ -2596,12 +2596,13 @@ static int btreeSwapOutMmap(BtShared *pBt){ if( pPg && pPg->pDbPage->flags & PGHDR_MMAP ){ MemPage *pNew = 0; rc = getAndInitPage(pBt, pPg->pgno, &pNew, 0); - if( rc==SQLITE_OK && pCsr->iPage==0 ){ - pCsr->info.pCell = pNew->aData + (pCsr->info.pCell - pPg->aData); + if( rc==SQLITE_OK ){ + if( pCsr->iPage==0 ){ + pCsr->info.pCell = pNew->aData + (pCsr->info.pCell - pPg->aData); + } + pCsr->apPage[0] = pNew; + releasePage(pPg); } - pCsr->apPage[0] = pNew; - releasePage(pPg); - if( rc!=SQLITE_OK ) return rc; } } }