]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an integer truncation problem due to oversized inputs to the
authordrh <>
Sat, 9 May 2026 12:41:23 +0000 (12:41 +0000)
committerdrh <>
Sat, 9 May 2026 12:41:23 +0000 (12:41 +0000)
approximate_match virtual table extension.
[forum:/info/625f687e4d25c392|Forum post 625f687e4d25c392].

FossilOrigin-Name: 2881e17cc030814b350ca371fd2fd2089d3ff2fcc4ea52654de8bc5c2fc95222

ext/misc/amatch.c
manifest
manifest.uuid
test/amatch1.test

index 21504777f68e6e91162c2205e25b2dd96f7728f9..cdc504a6145c53ab4f9f5827bc9e682bf6d488cf 100644 (file)
@@ -1157,7 +1157,7 @@ static int amatchNext(sqlite3_vtab_cursor *cur){
 #endif
     nWord = (int)strlen(pWord->zWord+2);
     if( nWord+20>nBuf ){
-      nBuf = (char)(nWord+100);
+      nBuf = nWord+100;
       zBuf = sqlite3_realloc64(zBuf, nBuf);
       if( zBuf==0 ) return SQLITE_NOMEM;
     }
index 0cda20e597be2ccdbd383558714ee5ad8650ae04..b964843c6afff7e1159242c64f7137f1e31fcf3b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\scorner-case\sfloating-point\srounding\sproblem\sin\sthe\sgenerate_series()\nvirtual\stable,\sintroduced\sby\s[c113e31b818d1677]\sand\sreported\sby\n[forum:/info/6e6cf9054bea2b1d|forum\spost\s6e6cf9054bea2b1d].
-D 2026-05-09T12:03:14.046
+C Fix\san\sinteger\struncation\sproblem\sdue\sto\soversized\sinputs\sto\sthe\napproximate_match\svirtual\stable\sextension.\n[forum:/info/625f687e4d25c392|Forum\spost\s625f687e4d25c392].
+D 2026-05-09T12:41:23.822
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -357,7 +357,7 @@ F ext/jni/src/tests/000-000-sanity.test c3427a0e0ac84d7cbe4c95fdc1cd4b61f9ddcf43
 F ext/jni/src/tests/000-001-ignored.test e17e874c6ab3c437f1293d88093cf06286083b65bf162317f91bbfd92f961b70
 F ext/jni/src/tests/900-001-fts.test bf0ce17a8d082773450e91f2388f5bbb2dfa316d0b676c313c637a91198090f0
 F ext/misc/README.md 6243cdc4d7eb791c41ef0716f3980b8b5f6aa8c61ff76a3958cbf0031c6ebfa7
-F ext/misc/amatch.c 8d237cc014b3736922c26a76a451050d244aa4980c47c531f368f817b1e77b49
+F ext/misc/amatch.c 972a250631d481f38736b46740bf7f5c9646a0f2bb53800543299a746ff1bac6
 F ext/misc/analyze.c 77e0f45a44c13d66f30922db553072305521c0fb3a448b920e641fccd2498527
 F ext/misc/anycollseq.c 5ffdfde9829eeac52219136ad6aa7cd9a4edb3b15f4f2532de52f4a22525eddb
 F ext/misc/appendvfs.c 9642c7a194a2a25dca7ad3e36af24a0a46d7702168c4ad7e59c9f9b0e16a3824
@@ -853,7 +853,7 @@ F test/altertab.test 8a2712f9076da5012a002d0b5cc0a421398a5bf61c25bab41b77c427586
 F test/altertab2.test 0889ba0700cc1cdb7bc7d25975aa61fece34f621de963d0886e2395716b38576
 F test/altertab3.test 575e771e2f02b13eb98798dc92eabacd187d6dbcf596e70f11d699b0b6b5d0b2
 F test/altertrig.test b1590647076add5a47aea0f2236c609ca0bc8a7a2462463edd3e5882c7894802
-F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
+F test/amatch1.test 8a9405f497a57705a368f242658e2aea900dd2efbc48a48024263b0df6fc1ea0
 F test/analyze.test 2fb21d7d64748636384e6cb8998dbf83968caf644c07fcb4f76c18f2e7ede94b
 F test/analyze3.test c5156cef33f04b90a6b9e9d5d0bbc273a0fb44147d4508407bf1080811e2c6c8
 F test/analyze4.test 68bd069f3ac7ac1e652ddd9f04f57d5606ddb4208450f5297005db7aa0dd707d
@@ -2203,8 +2203,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 5a8497dbec80b55a2dedc8a6f9ee823243e01a08d37ceeed1f87214dfe527d63
-R 650fed987026b994c216b4cae3ea83b3
+P ff56785674ebeb1d4bab66ba0827956a2728c8c14419f933d40dc0152efbd4f5
+R b6dbe1faa28dc5982185acca2f09eb8e
 U drh
-Z 0f598f77ac40c5db91066a29b5ff49b1
+Z e8d88e39571e0ae0821ca69c6f67d53a
 # Remove this line to create a well-formed Fossil manifest.
index 98a2228dc8c53f8921156df81dc81807c776764d..f2904de1823e7b459bb77a03318995a8e4a6cb17 100644 (file)
@@ -1 +1 @@
-ff56785674ebeb1d4bab66ba0827956a2728c8c14419f933d40dc0152efbd4f5
+2881e17cc030814b350ca371fd2fd2089d3ff2fcc4ea52654de8bc5c2fc95222
index cc0f77af107688e3fa1e6ae906b58f71e8dd11c1..5b3edf119e8efa94202c574d72e218eb2b8906e9 100644 (file)
@@ -114,4 +114,20 @@ do_execsql_test amatch1-2.22 {
      WHERE word MATCH 'joxxph' AND distance<300;
 } {}
 
+# Forum post 2026-05-09T05:48:28Z
+reset_db
+load_static_extension db amatch
+do_execsql_test amatch1-3.0 {
+  CREATE TABLE cost(iLang,cFrom,cTo,Cost);
+  INSERT INTO cost VALUES(0,'?','?',1);
+  CREATE TABLE vocab(word TEXT PRIMARY KEY);
+  CREATE VIRTUAL TABLE am USING approximate_match(
+      vocabulary_table=vocab,
+      vocabulary_word=word,
+      edit_distances=cost
+  );
+  INSERT INTO vocab(word) VALUES(format('%.81c','a'));
+  SELECT length(word) FROM am WHERE word MATCH format('%.81c','a');
+} {81}
+
 finish_test