]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use unsigned integers to count the number of pages in a freelist during
authordrh <drh@noemail.net>
Tue, 26 Feb 2019 16:17:06 +0000 (16:17 +0000)
committerdrh <drh@noemail.net>
Tue, 26 Feb 2019 16:17:06 +0000 (16:17 +0000)
an integrity_check, to avoid any possibility of a signed integer overflow.

FossilOrigin-Name: 05b87e0755638d31f6d8918f8758362f8c3981661449b5171180a8498f66bd9d

manifest
manifest.uuid
src/btree.c

index d53ad9b26bb0226c917cf02d8851a70ef7f0e342..70da0954255ddf3f8c1a5aa041bf1a8616089d2b 100644 (file)
--- 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
index 251770c67601faf812fa4c37048161f950c9595d..56360e49470cc7813cf1350cfb601d662c41f77e 100644 (file)
@@ -1 +1 @@
-848869ced988ca4d0ac76d43f984360fd11997a580719cccf8d55becea4e8fb1
\ No newline at end of file
+05b87e0755638d31f6d8918f8758362f8c3981661449b5171180a8498f66bd9d
\ No newline at end of file
index aa2c84999ca377e77a20f241b86527bab9ae91a3..9e7a9c04265e53486dbdca4c54d014cd15292ec9 100644 (file)
@@ -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);