]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a memory leak in fts5 that could occur when processing a query containing multipl...
authordan <Dan Kennedy>
Wed, 30 Jun 2021 14:04:25 +0000 (14:04 +0000)
committerdan <Dan Kennedy>
Wed, 30 Jun 2021 14:04:25 +0000 (14:04 +0000)
FossilOrigin-Name: 7c279670f544a5bb9733a88862d9e490062b07415cd790e0d6d1e2cb584d2007

ext/fts5/fts5_expr.c
ext/fts5/test/fts5detail.test
manifest
manifest.uuid

index f3cec00be8ccff63b9601ef0e076c22096da612c..d1cd5bb7f1edcf97647c5fe887dbd36d9bfd494d 100644 (file)
@@ -135,6 +135,7 @@ void sqlite3Fts5ParseError(Fts5Parse *pParse, const char *zFmt, ...){
   va_list ap;
   va_start(ap, zFmt);
   if( pParse->rc==SQLITE_OK ){
+    assert( pParse->zErr==0 );
     pParse->zErr = sqlite3_vmprintf(zFmt, ap);
     pParse->rc = SQLITE_ERROR;
   }
@@ -2144,9 +2145,8 @@ void sqlite3Fts5ParseSetColset(
 ){
   Fts5Colset *pFree = pColset;
   if( pParse->pConfig->eDetail==FTS5_DETAIL_NONE ){
-    pParse->rc = SQLITE_ERROR;
-    pParse->zErr = sqlite3_mprintf(
-      "fts5: column queries are not supported (detail=none)"
+    sqlite3Fts5ParseError(pParse, 
+        "fts5: column queries are not supported (detail=none)"
     );
   }else{
     fts5ParseSetColset(pParse, pExpr, pColset, &pFree);
@@ -2320,13 +2320,10 @@ Fts5ExprNode *sqlite3Fts5ParseNode(
                 || pPhrase->nTerm>1
                 || (pPhrase->nTerm>0 && pPhrase->aTerm[0].bFirst)
               ){
-              assert( pParse->rc==SQLITE_OK );
-              pParse->rc = SQLITE_ERROR;
-              assert( pParse->zErr==0 );
-              pParse->zErr = sqlite3_mprintf(
+              sqlite3Fts5ParseError(pParse, 
                   "fts5: %s queries are not supported (detail!=full)", 
                   pNear->nPhrase==1 ? "phrase": "NEAR"
-                  );
+              );
               sqlite3_free(pRet);
               pRet = 0;
             }
index cf4b718ba07efa64d93e5ec3fe5e755f4f113156..267ce6187c514a23480cd5c1ccaf1a46299a39c4 100644 (file)
@@ -212,6 +212,10 @@ do_catchsql_test 4.1 {
   SELECT * FROM t4('a:a')
 } {1 {fts5: column queries are not supported (detail=none)}}
 
+do_catchsql_test 4.2 {
+  SELECT * FROM t4('a:a &')
+} {1 {fts5: syntax error near "&"}}
+
 #-------------------------------------------------------------------------
 # Test that for the same content detail=none uses less space than 
 # detail=col, and that detail=col uses less space than detail=full
index 4d893f359c7302f61d51c08db796462201312a7b..3fe6b2c58301fc129d121c51b61ed8ddd1862577 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sassert()\sin\sfts5\sthat\smight\sfail\swhen\sdealing\swith\scorrupt\srecords.
-D 2021-06-30T12:11:19.208
+C Fix\sa\smemory\sleak\sin\sfts5\sthat\scould\soccur\swhen\sprocessing\sa\squery\scontaining\smultiple\sclasses\sof\serror.
+D 2021-06-30T14:04:25.220
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -117,7 +117,7 @@ F ext/fts5/fts5Int.h 26c74dd5776f798436fbf604a0bf0e8de263b35b5060b05c15f9085845d
 F ext/fts5/fts5_aux.c f558e1fb9f0f86a4f7489e258c162e1f947de5ff2709087fbb465fddb7092f98
 F ext/fts5/fts5_buffer.c 89a51b37c4aa1c02c1ec24c18c55196c0693b29a752fedfd036938df59a1347f
 F ext/fts5/fts5_config.c 8336d0ff6db0933f63cfec8ae0ab76e68393259cbccc0b46e1f79f7fa1842ff3
-F ext/fts5/fts5_expr.c 9462249a3bb82d0e49b163500f9d2197c2e4cd95bf440a9bbfc3906b22ea1e1b
+F ext/fts5/fts5_expr.c 6ea447b0cb1888110087a8c04133817b0ccf964fe22414371b0e32189a556533
 F ext/fts5/fts5_hash.c 1aa93c9b5f461afba66701ee226297dc78402b3bdde81e90a10de5fe3df14959
 F ext/fts5/fts5_index.c eb1864c6abacf08d959956183a55a4f9767af76be289f2bb519bb0f197b3fd72
 F ext/fts5/fts5_main.c 35ebbcae681a4a40027c47bc2e94d7e7c81e331dc406bb9b23c546454ee8f98a
@@ -163,7 +163,7 @@ F ext/fts5/test/fts5corrupt2.test 7453752ba12ce91690c469a6449d412561cc604b1dec99
 F ext/fts5/test/fts5corrupt3.test 270cc68ff73fb5d7923619f23ef0655bf0409e83bab5790824bec20f0ee3e82e
 F ext/fts5/test/fts5corrupt4.test f4c08e2182a48d8b70975fd869ee5391855c06d8a0ff87b6a2529e7c5a88a1d3
 F ext/fts5/test/fts5delete.test 619295b20dbc1d840b403ee07c878f52378849c3c02e44f2ee143b3e978a0aa7
-F ext/fts5/test/fts5detail.test 31b240dbf6d44ac3507e2f8b65f29fdc12465ffd531212378c7ce1066766f54e
+F ext/fts5/test/fts5detail.test 54015e9c43ec4ba542cfb93268abdf280e0300f350efd08ee411284b03595cc4
 F ext/fts5/test/fts5determin.test 1b77879b2ae818b5b71c859e534ee334dac088b7cf3ff3bf76a2c82b1c788d11
 F ext/fts5/test/fts5dlidx.test b90852c55881b29dbac6380b274de27beae623ac4b6d567c6c8fb9cdc315a86e
 F ext/fts5/test/fts5doclist.test faa9e9cc3c0645fa6203667cb5f007c359447c6ee66753f71a58175c2497cacd
@@ -1919,7 +1919,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 763fdec5b3151eeab001c50e78f654cd9b4b4c10e81e50a663046a70e64d5339
-R 729c303f68b9dba88db1c84e664b83e4
+P 9e760e256089c0ebbf816a8de8b186f62e1ffcd6b8b0e76dab8387798cd4d0e1
+R d8e84becbe3e499665a01229c17289ad
 U dan
-Z 07f3ac8a0af0bb00b72dcdaea40211f4
+Z 94aad6f32f8b281da0508c0481608ec6
index baf189930037eac54985aea3d33bcef31b464805..9c34aa36db6c92afea0715c575cd5da8e47bb0f1 100644 (file)
@@ -1 +1 @@
-9e760e256089c0ebbf816a8de8b186f62e1ffcd6b8b0e76dab8387798cd4d0e1
\ No newline at end of file
+7c279670f544a5bb9733a88862d9e490062b07415cd790e0d6d1e2cb584d2007
\ No newline at end of file