]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix other problems where 32-bit integer overflow may cause a problem. Two that requir...
authordan <dan@noemail.net>
Wed, 21 Dec 2011 18:04:41 +0000 (18:04 +0000)
committerdan <dan@noemail.net>
Wed, 21 Dec 2011 18:04:41 +0000 (18:04 +0000)
FossilOrigin-Name: c723e3e18a008922281d8d6e8e3aba07941eb173

manifest
manifest.uuid
src/pager.c
src/test_journal.c
src/test_stat.c

index 4f3ee6af22f0a5a81ce6bfe8726ae370e97972c5..bbe5f09d73e172da05dc0d02a524cc58fbaf7f47 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\s32-bit\soverflow\swhen\scalculating\sthe\sbyte\soffset\sof\san\soverflow\spage\sin\sSQLITE_DIRECT_OVERFLOW_READ\scode.\sFix\sfor\s[ac0ff496b7].
-D 2011-12-21T17:00:16.841
+C Fix\sother\sproblems\swhere\s32-bit\sinteger\soverflow\smay\scause\sa\sproblem.\sTwo\sthat\srequire\san\simprobably\slarge\ssub-journal\sand\stwo\sin\stest\sharness\scode.
+D 2011-12-21T18:04:41.417
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5b4a3e12a850b021547e43daf886b25133b44c07
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -168,7 +168,7 @@ F src/os_common.h 92815ed65f805560b66166e3583470ff94478f04
 F src/os_os2.c 4a75888ba3dfc820ad5e8177025972d74d7f2440
 F src/os_unix.c 7dc7df10331942b139032328449a3723e051979e
 F src/os_win.c 197d23ce8a0dff748e766e034bf95ff756dd3884
-F src/pager.c c7c32a1c279e0bbbde3578172985c41d4c5efc35
+F src/pager.c 523c64f6ca707e820d5cf10ed8371238ecac8333
 F src/pager.h 5cd760857707529b403837d813d86b68938d6183
 F src/parse.y fabb2e7047417d840e6fdb3ef0988a86849a08ba
 F src/pcache.c 1fdd77978c1525d1ca4b9ef48eb80abca710cb4c
@@ -211,7 +211,7 @@ F src/test_hexio.c c4773049603151704a6ab25ac5e936b5109caf5a
 F src/test_init.c 3cbad7ce525aec925f8fda2192d576d47f0d478a
 F src/test_intarray.c d879bbf8e4ce085ab966d1f3c896a7c8b4f5fc99
 F src/test_intarray.h 489edb9068bb926583445cb02589344961054207
-F src/test_journal.c 03313c693cca72959dcaaf79f8d76f21c01e19ff
+F src/test_journal.c 2c06e4be6584d51b935dc8b353980a9388de62ef
 F src/test_loadext.c df586c27176e3c2cb2e099c78da67bf14379a56e
 F src/test_malloc.c 8d416f29ad8573f32601f6056c9d2b17472e9ad5
 F src/test_multiplex.c 6e07b94e2fe430f7f4f0d7d67b5e58f504dea655
@@ -225,7 +225,7 @@ F src/test_quota.h 9ffa1d3ad6d0a6a24e8670ea64b909c717ec3358
 F src/test_rtree.c 6d06306e29946dc36f528a3a2cdc3add794656f1
 F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0
 F src/test_server.c 2f99eb2837dfa06a4aacf24af24c6affdf66a84f
-F src/test_stat.c 69de4361c7a69fc1136d31ab7144408cd00805c7
+F src/test_stat.c 80271ad7d776a79babe0e025bb3a1bfcd3a3cfb1
 F src/test_superlock.c 2b97936ca127d13962c3605dbc9a4ef269c424cd
 F src/test_syscall.c a992d8c80ea91fbf21fb2dd570db40e77dd7e6ae
 F src/test_tclvar.c f4dc67d5f780707210d6bb0eb6016a431c04c7fa
@@ -985,7 +985,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
-P 979daf92e09305665d943e197b93b81139197c5b
-R 3ca2d5c9a0922c80f51a136db15c2655
+P c5256b59ad70104c1e181b9f49d1d712cf4cc9f6
+R 67d063070f0e350ae5f59b7b697ace26
 U dan
-Z 686f6e4400cb272609dcad0347caf0ec
+Z bef61bfcf61cf3a9e556e6b3194dc0ce
index b8f0351d860cbbac9e9be029287994d153970235..0d2903da393105f0f12b431f8d37b4efcf46a3e9 100644 (file)
@@ -1 +1 @@
-c5256b59ad70104c1e181b9f49d1d712cf4cc9f6
\ No newline at end of file
+c723e3e18a008922281d8d6e8e3aba07941eb173
\ No newline at end of file
index 9db6ebd3f4b7047564d60ce19ae7012d7ca47076..4f8473e735bfcbc2174f6a09ee4c7608074227e0 100644 (file)
@@ -3267,13 +3267,13 @@ static int pagerPlaybackSavepoint(Pager *pPager, PagerSavepoint *pSavepoint){
   */
   if( pSavepoint ){
     u32 ii;            /* Loop counter */
-    i64 offset = pSavepoint->iSubRec*(4+pPager->pageSize);
+    i64 offset = (i64)pSavepoint->iSubRec*(4+pPager->pageSize);
 
     if( pagerUseWal(pPager) ){
       rc = sqlite3WalSavepointUndo(pPager->pWal, pSavepoint->aWalData);
     }
     for(ii=pSavepoint->iSubRec; rc==SQLITE_OK && ii<pPager->nSubRec; ii++){
-      assert( offset==ii*(4+pPager->pageSize) );
+      assert( offset==(i64)ii*(4+pPager->pageSize) );
       rc = pager_playback_one_page(pPager, &offset, pDone, 0, 1);
     }
     assert( rc!=SQLITE_DONE );
@@ -4125,7 +4125,7 @@ static int subjournalPage(PgHdr *pPg){
     ** write the journal record into the file.  */
     if( rc==SQLITE_OK ){
       void *pData = pPg->pData;
-      i64 offset = pPager->nSubRec*(4+pPager->pageSize);
+      i64 offset = (i64)pPager->nSubRec*(4+pPager->pageSize);
       char *pData2;
   
       CODEC2(pPager, pData, pPg->pgno, 7, return SQLITE_NOMEM, pData2);
index 68869723b3e2af7492fc828cc985b34cd387cb6c..ef82070320b2fe9af201ec1dcb0dadb71da51247 100644 (file)
@@ -391,7 +391,7 @@ static int openTransaction(jt_file *pMain, jt_file *pJournal){
     while( rc==SQLITE_OK && iTrunk>0 ){
       u32 nLeaf;
       u32 iLeaf;
-      sqlite3_int64 iOff = (iTrunk-1)*pMain->nPagesize;
+      sqlite3_int64 iOff = (i64)(iTrunk-1)*pMain->nPagesize;
       rc = sqlite3OsRead(p, aData, pMain->nPagesize, iOff);
       nLeaf = decodeUint32(&aData[4]);
       for(iLeaf=0; rc==SQLITE_OK && iLeaf<nLeaf; iLeaf++){
index ef8176904a232a18f4476d95de48523e9e8a734e..a0893b39747e186a8a89d59eedb88a429026d3c5 100644 (file)
@@ -369,7 +369,7 @@ static void statSizeAndOffset(StatCursor *pCsr){
 
   /* The default page size and offset */
   pCsr->szPage = sqlite3BtreeGetPageSize(pBt);
-  pCsr->iOffset = pCsr->szPage * (pCsr->iPageno - 1);
+  pCsr->iOffset = (i64)pCsr->szPage * (pCsr->iPageno - 1);
 
   /* If connected to a ZIPVFS backend, override the page size and
   ** offset with actual values obtained from ZIPVFS.