aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorshane <shane@noemail.net>2008-11-11 22:18:20 +0000
committershane <shane@noemail.net>2008-11-11 22:18:20 +0000
commit34ac18daf552fd08ff7a4ad7deb1b969c5ff700d (patch)
treee91bbeefb81983e37edf233cb44a69c7d38d2a75 /src
parent826d5b7e1c7058c0e84a4a7b552fa0ec09a8d0e2 (diff)
downloadsqlite-34ac18daf552fd08ff7a4ad7deb1b969c5ff700d.tar.gz
sqlite-34ac18daf552fd08ff7a4ad7deb1b969c5ff700d.zip
Fixed crash during an UPDATE when free cell size is corrupt. (CVS 5887)
FossilOrigin-Name: ec18667e2d2826a27f2c052ba3790ab5b8cf0bc4
Diffstat (limited to 'src')
-rw-r--r--src/btree.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/btree.c b/src/btree.c
index c3de4ea26..2519a3f2e 100644
--- a/src/btree.c
+++ b/src/btree.c
@@ -9,7 +9,7 @@
** May you share freely, never taking more than you give.
**
*************************************************************************
-** $Id: btree.c,v 1.530 2008/11/11 20:51:51 shane Exp $
+** $Id: btree.c,v 1.531 2008/11/11 22:18:20 shane Exp $
**
** This file implements a external (disk-based) database using BTrees.
** See the header comment on "btreeInt.h" for additional information.
@@ -4651,6 +4651,8 @@ static int insertCell(
idx = allocateSpace(pPage, sz);
assert( idx>0 );
assert( end <= get2byte(&data[hdr+5]) );
+ if (idx+sz > pPage->pBt->usableSize)
+ return SQLITE_CORRUPT_BKPT;
pPage->nCell++;
pPage->nFree -= 2;
memcpy(&data[idx+nSkip], pCell+nSkip, sz-nSkip);