aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2019-02-26 16:17:06 +0000
committerdrh <drh@noemail.net>2019-02-26 16:17:06 +0000
commiteaac9996edf679fd9b081508e23f98e70f5cdcd9 (patch)
tree27f9c7f595805cbf5f708693f52ced2e403a54c3
parent2b454e0335cbe14bc96b460ff3695007185fbb6e (diff)
downloadsqlite-eaac9996edf679fd9b081508e23f98e70f5cdcd9.tar.gz
sqlite-eaac9996edf679fd9b081508e23f98e70f5cdcd9.zip
Use unsigned integers to count the number of pages in a freelist during
an integrity_check, to avoid any possibility of a signed integer overflow. FossilOrigin-Name: 05b87e0755638d31f6d8918f8758362f8c3981661449b5171180a8498f66bd9d
-rw-r--r--manifest12
-rw-r--r--manifest.uuid2
-rw-r--r--src/btree.c6
3 files changed, 10 insertions, 10 deletions
diff --git a/manifest b/manifest
index d53ad9b26..70da09542 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sharmless\scompiler\swarning\sthat\sonly\scomes\sup\sduring\sdebug\sbuilds.
-D 2019-02-26T16:11:46.752
+C Use\sunsigned\sintegers\sto\scount\sthe\snumber\sof\spages\sin\sa\sfreelist\sduring\nan\sintegrity_check,\sto\savoid\sany\spossibility\sof\sa\ssigned\sinteger\soverflow.
+D 2019-02-26T16:17:06.560
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in 1ad7263f38329c0ecea543c80f30af839ee714ea77fc391bf1a3fbb919a5b6b5
@@ -456,7 +456,7 @@ F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df
F src/backup.c 78d3cecfbe28230a3a9a1793e2ead609f469be43e8f486ca996006be551857ab
F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33
F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6
-F src/btree.c 026f48c39b179a5602423904fcaaae87bbd75f659fd672b3756fea43356d9909
+F src/btree.c f85f8abe99ec3e72671f0fc9b09114188974fe0b9a3ea9edc77977e853ff75e9
F src/btree.h 63b94fb38ce571c15eb6a3661815561b501d23d5948b2d1e951fbd7a2d04e8d3
F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f
F src/build.c 3acec29b23948042173301a8befebae01a98344debf66cbd4467c8b9077707b8
@@ -1805,7 +1805,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 35cbee7fe4a0b7ca06206ca2f69fc35abe3de4929070d6585ab765af82027438
-R d5f269750441e62c6e89c0272d884f83
+P 848869ced988ca4d0ac76d43f984360fd11997a580719cccf8d55becea4e8fb1
+R 5bfaa50c9d0b312e0c5de93392fc2854
U drh
-Z 26f5e510f6fdca054128434e6c62bf8f
+Z d36c5219418a3d97914eaaa4ccab9e4b
diff --git a/manifest.uuid b/manifest.uuid
index 251770c67..56360e494 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-848869ced988ca4d0ac76d43f984360fd11997a580719cccf8d55becea4e8fb1 \ No newline at end of file
+05b87e0755638d31f6d8918f8758362f8c3981661449b5171180a8498f66bd9d \ No newline at end of file
diff --git a/src/btree.c b/src/btree.c
index aa2c84999..9e7a9c042 100644
--- a/src/btree.c
+++ b/src/btree.c
@@ -9616,10 +9616,10 @@ static void checkList(
IntegrityCk *pCheck, /* Integrity checking context */
int isFreeList, /* True for a freelist. False for overflow page list */
int iPage, /* Page number for first page in the list */
- int N /* Expected number of pages in the list */
+ u32 N /* Expected number of pages in the list */
){
int i;
- int expected = N;
+ u32 expected = N;
int nErrAtStart = pCheck->nErr;
while( iPage!=0 && pCheck->mxErr ){
DbPage *pOvflPage;
@@ -9878,7 +9878,7 @@ static int checkTreePage(
/* Check the content overflow list */
if( info.nPayload>info.nLocal ){
- int nPage; /* Number of pages on the overflow chain */
+ u32 nPage; /* Number of pages on the overflow chain */
Pgno pgnoOvfl; /* First page of the overflow chain */
assert( pc + info.nSize - 4 <= usableSize );
nPage = (info.nPayload - info.nLocal + usableSize - 5)/(usableSize - 4);