From: dan Date: Thu, 2 May 2024 17:46:52 +0000 (+0000) Subject: Fix a case where the recovery extension might write uninitialized data to the recover... X-Git-Tag: version-3.46.0~34 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=01508c814ccf21be880bfab14776a1015283e82a;p=thirdparty%2Fsqlite.git Fix a case where the recovery extension might write uninitialized data to the recovered database. FossilOrigin-Name: 8519b4d0393ed17eed06bceffbc891fe8cae0bc1d466a79eba0602ef46b07c56 --- diff --git a/ext/recover/dbdata.c b/ext/recover/dbdata.c index b01e544885..1905e68813 100644 --- a/ext/recover/dbdata.c +++ b/ext/recover/dbdata.c @@ -666,7 +666,6 @@ static int dbdataNext(sqlite3_vtab_cursor *pCursor){ rc = dbdataBufferSize(&pCsr->rec, nPayload+DBDATA_PADDING_BYTES); if( rc!=SQLITE_OK ) return rc; assert( nPayload!=0 ); - pCsr->nRec = nPayload; /* Load the nLocal bytes of payload */ memcpy(pCsr->rec.aBuf, &pCsr->aPage[iOff], nLocal); @@ -696,6 +695,7 @@ static int dbdataNext(sqlite3_vtab_cursor *pCursor){ nPayload -= nRem; } memset(&pCsr->rec.aBuf[nPayload], 0, DBDATA_PADDING_BYTES); + pCsr->nRec = nPayload; iHdr = dbdataGetVarintU32(pCsr->rec.aBuf, &nHdr); if( nHdr>nPayload ) nHdr = 0; diff --git a/manifest b/manifest index 7d77c4e1d2..d003fac95f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\san\sOP_Next\sin\scases\swhere\san\sIN(...)\squery\sagainst\sa\sUNIQUE\sindex\smay\sreturn\sat\smost\s1\srow. -D 2024-05-02T14:48:58.295 +C Fix\sa\scase\swhere\sthe\srecovery\sextension\smight\swrite\suninitialized\sdata\sto\sthe\srecovered\sdatabase. +D 2024-05-02T17:46:52.967 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -478,7 +478,7 @@ F ext/rbu/rbuvacuum4.test ffccd22f67e2d0b380d2889685742159dfe0d19a3880ca3d2d1d69 F ext/rbu/sqlite3rbu.c 4a3376c0fb9a844a799ac529fb81260523f6b13c9f629bc270c632dbae5fc1f8 F ext/rbu/sqlite3rbu.h 9d923eb135c5d04aa6afd7c39ca47b0d1d0707c100e02f19fdde6a494e414304 F ext/rbu/test_rbu.c ee6ede75147bc081fe9bc3931e6b206277418d14d3fbceea6fdc6216d9b47055 -F ext/recover/dbdata.c 520636e61eddfa22fe13b0324c0e7b67b699464ff63aeaf4c26ff00b7ba0844c +F ext/recover/dbdata.c e518c1a221a259a1ea594d9db8fce356861bfa450e6f54eda999242b9bd5c50a F ext/recover/recover1.test c484d01502239f11b61f23c1cee9f5dd19fa17617f8974e42e74d64639c524cf F ext/recover/recover_common.tcl a61306c1eb45c0c3fc45652c35b2d4ec19729e340bdf65a272ce4c229cefd85a F ext/recover/recoverbuild.test c74170e0f7b02456af41838afeb5353fdb985a48cc2331d661bbabbca7c6b8e3 @@ -2188,9 +2188,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 71f08b912251c8a3ac1bd8e344903336648e4187f7493f8c126e60b3b51b9f09 560f64157d2fe40e107582eebb6526185c9c43305e364f4132e182dbec5b210a -R 86283dd1f6bad0a3523b1ba3ad89b434 -T +closed 560f64157d2fe40e107582eebb6526185c9c43305e364f4132e182dbec5b210a +P d7648e21605a0b381b1935a47e5a77bdfacc4cc96f03d6bb7956f8f4e6a40648 +R 91204a904de412874c1ad0642f190840 U dan -Z 136e857f8914132ecc08f9fc952c59a7 +Z c29162d93ac6c523dea45672137e5762 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index d6d09be1f3..1fad912567 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d7648e21605a0b381b1935a47e5a77bdfacc4cc96f03d6bb7956f8f4e6a40648 \ No newline at end of file +8519b4d0393ed17eed06bceffbc891fe8cae0bc1d466a79eba0602ef46b07c56 \ No newline at end of file