From: drh <> Date: Sat, 9 May 2026 12:41:23 +0000 (+0000) Subject: Fix an integer truncation problem due to oversized inputs to the X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=86d1ef8bf72521491bee5f8aad101cc4912f6332;p=thirdparty%2Fsqlite.git Fix an integer truncation problem due to oversized inputs to the approximate_match virtual table extension. [forum:/info/625f687e4d25c392|Forum post 625f687e4d25c392]. FossilOrigin-Name: 2881e17cc030814b350ca371fd2fd2089d3ff2fcc4ea52654de8bc5c2fc95222 --- diff --git a/ext/misc/amatch.c b/ext/misc/amatch.c index 21504777f6..cdc504a614 100644 --- a/ext/misc/amatch.c +++ b/ext/misc/amatch.c @@ -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; } diff --git a/manifest b/manifest index 0cda20e597..b964843c6a 100644 --- 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. diff --git a/manifest.uuid b/manifest.uuid index 98a2228dc8..f2904de182 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ff56785674ebeb1d4bab66ba0827956a2728c8c14419f933d40dc0152efbd4f5 +2881e17cc030814b350ca371fd2fd2089d3ff2fcc4ea52654de8bc5c2fc95222 diff --git a/test/amatch1.test b/test/amatch1.test index cc0f77af10..5b3edf119e 100644 --- a/test/amatch1.test +++ b/test/amatch1.test @@ -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