From: mistachkin Date: Wed, 6 Mar 2024 20:56:52 +0000 (+0000) Subject: When inserting a 3-byte cell into a btree, ensure that the extra padding byte is... X-Git-Tag: version-3.45.2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=069145155758282969f983f918ba0bf677bdcece;p=thirdparty%2Fsqlite.git When inserting a 3-byte cell into a btree, ensure that the extra padding byte is 0x00. This is not necessary for security, as far as I can tell, but it seems like a reasonable precaution. FossilOrigin-Name: f3e841873dffaa8cd2f4f3cf260487ed402febb99b9ccad04e2a1d481e903aca --- diff --git a/manifest b/manifest index d88091258e..ae72029b7d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Rig\ssqlite3_serialize()\sso\sthat\sit\swill\sinitialize\sa\spreviously\suninitialized\sdatabase\sprior\sto\sserializing\sit,\sso\sthat\sit\sdoes\snot\shave\sa\szero-byte\ssize\sand\sdoes\snot\sreturn\sNULL\s(except\sfor\sOOM).\s\s[forum:/forumpost/498777780e16880a|Forum\sthread\s498777780e16880a]. -D 2024-03-06T20:55:44.426 +C When\sinserting\sa\s3-byte\scell\sinto\sa\sbtree,\sensure\sthat\sthe\sextra\spadding\sbyte\sis\s0x00.\s\sThis\sis\snot\snecessary\sfor\ssecurity,\sas\sfar\sas\sI\scan\stell,\sbut\sit\sseems\slike\sa\sreasonable\sprecaution. +D 2024-03-06T20:56:52.386 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -677,7 +677,7 @@ F src/auth.c 19b7ccacae3dfba23fc6f1d0af68134fa216e9040e53b0681b4715445ea030b4 F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523 F src/bitvec.c 9eac5f42c11914d5ef00a75605bb205e934f435c579687f985f1f8b0995c8645 F src/btmutex.c 79a43670447eacc651519a429f6ece9fd638563cf95b469d6891185ddae2b522 -F src/btree.c c64df2b1623501e397128261de58d3ab44c301e4eb993a4055aa971444420200 +F src/btree.c 5410768087e524f331816c751c4b1f714693fa864a448337e443e49cc397aeaf F src/btree.h 03e3356f5208bcab8eed4e094240fdac4a7f9f5ddf5e91045ce589f67d47c240 F src/btreeInt.h 3e2589726c4f105e653461814f65857465da68be1fac688de340c43b873f4062 F src/build.c e7d9044592eeeea8e78d8ae53ca8d31fd6e92ca0d4f53e2f2e8ccf7352e0b04b @@ -2160,9 +2160,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 6d385ccda8aba16a37c5e8c39f3aeba97c472321e4c8c9efac2de4518b61bdc8 -Q +e638d5e408ea2e189b6771d16bbc2e42c606e88e05fbea78079b6e39e41f344c -R dd82bdbc7bb71ea5e69302f99eff1eec +P 22a33f133e3e833c960f46e1b4c74043010181ff7ba9e57f2d009b65d3275d82 +Q +5766f1279dab91e030d4dcf5133659e5cedf914a1628ccf00d67d8e50a9957fd +R b691fdaab2b47111553543c1888af596 U mistachkin -Z 133a2b6085ad0091b20bee86ef7e5549 +Z 6c5c8f9b4835564916ac3776cb0ec051 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 66134c89d4..6618d115d7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -22a33f133e3e833c960f46e1b4c74043010181ff7ba9e57f2d009b65d3275d82 \ No newline at end of file +f3e841873dffaa8cd2f4f3cf260487ed402febb99b9ccad04e2a1d481e903aca \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index c41fb811ab..0fdc680f41 100644 --- a/src/btree.c +++ b/src/btree.c @@ -6956,7 +6956,10 @@ static int fillInCell( n = nHeader + nPayload; testcase( n==3 ); testcase( n==4 ); - if( n<4 ) n = 4; + if( n<4 ){ + n = 4; + pPayload[nPayload] = 0; + } *pnSize = n; assert( nSrc<=nPayload ); testcase( nSrcpBt->nPreformatSize; - if( szNew<4 ) szNew = 4; + if( szNew<4 ){ + szNew = 4; + newCell[3] = 0; + } if( ISAUTOVACUUM(p->pBt) && szNew>pPage->maxLocal ){ CellInfo info; pPage->xParseCell(pPage, newCell, &info);