From: drh <> Date: Sat, 19 Mar 2022 12:53:43 +0000 (+0000) Subject: Fix the zipfile extension so that it knows that a zero-length BLOB returns X-Git-Tag: version-3.38.2~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=72327c367c516dc9a2e9cbd0a5e778a566684682;p=thirdparty%2Fsqlite.git Fix the zipfile extension so that it knows that a zero-length BLOB returns a NULL pointer. [forum:/forumpost/ae86934905|Forum post ae86934905]. FossilOrigin-Name: b75c6bad3a5a165948077026441f02188ba30c7960815486c1973e18992401b3 --- diff --git a/ext/misc/zipfile.c b/ext/misc/zipfile.c index db2aa78cc7..243705ff12 100644 --- a/ext/misc/zipfile.c +++ b/ext/misc/zipfile.c @@ -1262,9 +1262,14 @@ static int zipfileFilter( zipfileCursorErr(pCsr, "zipfile() function requires an argument"); return SQLITE_ERROR; }else if( sqlite3_value_type(argv[0])==SQLITE_BLOB ){ + static const u8 aEmptyBlob = 0; const u8 *aBlob = (const u8*)sqlite3_value_blob(argv[0]); int nBlob = sqlite3_value_bytes(argv[0]); assert( pTab->pFirstEntry==0 ); + if( aBlob==0 ){ + aBlob = &aEmptyBlob; + nBlob = 0; + } rc = zipfileLoadDirectory(pTab, aBlob, nBlob); pCsr->pFreeEntry = pTab->pFirstEntry; pTab->pFirstEntry = pTab->pLastEntry = 0; diff --git a/manifest b/manifest index 5dbaeeb148..10db68ce93 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Another\sfix\sfor\sa\scorner-case\sin\ssqlite_offset()\s-\sthis\sone\shaving\sto\ndo\swith\scomputed\svirtual\scolumns\sin\sa\sWITHOUT\sROWID\stable.\s\sAlso\san\nassertion\sfault\sproblem\swith\ssqlite_offset(). -D 2022-03-17T11:37:02.160 +C Fix\sthe\szipfile\sextension\sso\sthat\sit\sknows\sthat\sa\szero-length\sBLOB\sreturns\na\sNULL\spointer.\n[forum:/forumpost/ae86934905|Forum\spost\sae86934905]. +D 2022-03-19T12:53:43.787 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -339,7 +339,7 @@ F ext/misc/vfsstat.c 474d08efc697b8eba300082cb1eb74a5f0f3df31ed257db1cb07e72ab0e F ext/misc/vtablog.c 5538acd0c8ddaae372331bee11608d76973436b77d6a91e8635cfc9432fba5ae F ext/misc/vtshim.c 1976e6dd68dd0d64508c91a6dfab8e75f8aaf6cd F ext/misc/wholenumber.c a838d1bea913c514ff316c69695efbb49ea3b8cb37d22afc57f73b6b010b4546 -F ext/misc/zipfile.c 238ccb990ed45a74e24d0fbb449d7752a568c2b7c1d5b255d451f11703ced592 +F ext/misc/zipfile.c 3e76c6c3f73e05bfc7b2f743c268071c31e9aec0491282506ecb79cdef69d6f2 F ext/misc/zorder.c b0ff58fa643afa1d846786d51ea8d5c4b6b35aa0254ab5a82617db92f3adda64 F ext/rbu/rbu.c 801450b24eaf14440d8fd20385aacc751d5c9d6123398df41b1b5aa804bf4ce8 F ext/rbu/rbu1.test c62904bd9526dcdc3496a21199aaf14ae191bbadbf67f076bf16be6b3f2115c2 @@ -1944,10 +1944,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 5b8a0460a2ea8720731282a396e5de835cf87876d41f7d861712b160706b838d -Q +3950b7d006add571579158c751247a9435801e53eafd84b43dd3046e01da8ee6 -Q +84ddd19bcec99f04b43b1a823477457758a2d93ea9beda43598e1234ea07776c -R a546161d7d99ae83575406d0cb55a6e5 +P 9e72cae2f15bdd1466ff4fe1e9b747d7630b581bccd8b13d1fd69e33a81a0f72 +Q +5f6d56737caefa78e542a7af2f95646e3a818e0ecdd8e838f3c2978500ce960c +R 6234eaa5b4e97526e6de83dbd313277a U drh -Z 00658247f057c6cda3aee13e14824182 +Z 2eceef7870a15dbe31ad1386716700c1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 185eea4931..5f5efdf04c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9e72cae2f15bdd1466ff4fe1e9b747d7630b581bccd8b13d1fd69e33a81a0f72 \ No newline at end of file +b75c6bad3a5a165948077026441f02188ba30c7960815486c1973e18992401b3 \ No newline at end of file