From 469813659440c8a9a8662ca79a69e8cfdb3c1d97 Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 8 Jul 2015 12:25:38 +0000 Subject: [PATCH] Early detection of file corruption in a debugging routine, before the invalid data can cause problems. FossilOrigin-Name: b27a47fef995f0ab2516e6ca779711cab1f50fb9 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/vdbeaux.c | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index cc7fb8f6d4..b76060a668 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Merge\sthe\sFts5MultiSegIter\sand\sFts5IndexIter\sobjects. -D 2015-07-07T19:35:11.437 +C Early\sdetection\sof\sfile\scorruption\sin\sa\sdebugging\sroutine,\sbefore\sthe\sinvalid\ndata\scan\scause\sproblems. +D 2015-07-08T12:25:38.106 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 017bf0511d1b2dd1db5e16488fbf75a17b526cbc F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -394,7 +394,7 @@ F src/vdbe.c 5ee4a2bf871418f61d06dc256b9b3a0084b5ec46 F src/vdbe.h 7a75045d879118b9d3af7e8b3c108f2f27c51473 F src/vdbeInt.h 8b54e01ad0463590e7cffabce0bc36da9ee4f816 F src/vdbeapi.c 6a0d7757987018ff6b1b81bc5293219cd26bb299 -F src/vdbeaux.c 54bcc56d368b2d0bebc523cff514893156c09daf +F src/vdbeaux.c 787f5f9d58f4c6f39294ed06909ba602d1a402e6 F src/vdbeblob.c 4f2e8e075d238392df98c5e03a64342465b03f90 F src/vdbemem.c ae38a0d35ae71cf604381a887c170466ba518090 F src/vdbesort.c f5009e7a35e3065635d8918b9a31f498a499976b @@ -1364,7 +1364,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 6441f2dc9e7f53de64bc15b1d766c885b2635112 -R f97628f043782e8117cb742bf5766746 -U dan -Z e1b4a5f91c01e7d2767125a8d1a40f5a +P 6ace73541ae48aeb19e0c2d9f6772d032d0a7eae +R 8adde983bcb4c45839c171b768ffd3b9 +U drh +Z b9cf714cb314f182c61af66a54b1bb68 diff --git a/manifest.uuid b/manifest.uuid index 9704e8b452..9b6013994f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6ace73541ae48aeb19e0c2d9f6772d032d0a7eae \ No newline at end of file +b27a47fef995f0ab2516e6ca779711cab1f50fb9 \ No newline at end of file diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 5dbbadaa2b..08dc885df6 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -3344,6 +3344,7 @@ static int vdbeRecordCompareDebug( /* mem1.u.i = 0; // not needed, here to silence compiler warning */ idx1 = getVarint32(aKey1, szHdr1); + if( szHdr1>98307 ) return SQLITE_CORRUPT; d1 = szHdr1; assert( pKeyInfo->nField+pKeyInfo->nXField>=pPKey2->nField || CORRUPT_DB ); assert( pKeyInfo->aSortOrder!=0 );