From 8c43b6559fb09e41eed2adaac223cf8fe33d318d Mon Sep 17 00:00:00 2001 From: dan Date: Mon, 24 Aug 2026 18:55:06 +0000 Subject: [PATCH] Avoid a technically undefined signed integer overflow in fts5. Report [bugs:/info/2026-08-23T16:25:44Z | 2026-08-23T16:25:44Z]. FossilOrigin-Name: cde23480be10e2da6acb357d39e129b314429640143034b9e2207719dcf18350 --- ext/fts5/fts5_index.c | 4 ++-- ext/fts5/test/fts5misc.test | 8 ++++++++ manifest | 14 +++++++------- manifest.uuid | 2 +- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ext/fts5/fts5_index.c b/ext/fts5/fts5_index.c index c0bd8cdc71..ef93f819b1 100644 --- a/ext/fts5/fts5_index.c +++ b/ext/fts5/fts5_index.c @@ -6018,9 +6018,9 @@ static void fts5DoclistIterNext(Fts5DoclistIter *pIter){ if( p>=pIter->aEof ){ pIter->aPoslist = 0; }else{ - i64 iDelta; + u64 iDelta; - p += fts5GetVarint(p, (u64*)&iDelta); + p += fts5GetVarint(p, &iDelta); pIter->iRowid += iDelta; /* Read position list size */ diff --git a/ext/fts5/test/fts5misc.test b/ext/fts5/test/fts5misc.test index 817be9560c..15c0a219a8 100644 --- a/ext/fts5/test/fts5misc.test +++ b/ext/fts5/test/fts5misc.test @@ -697,5 +697,13 @@ do_execsql_test 27.1 { SELECT * FROM ft1 WHERE rowid=3 AND b MATCH 'hello'; } +#------------------------------------------------------------------------- +do_execsql_test 28.0 { + CREATE VIRTUAL TABLE t5 USING fts5(c0); + INSERT INTO t5(rowid, c0) VALUES(-9223372036854775807, 'xy x'); + INSERT INTO t5(rowid, c0) VALUES( 2147483647, 'x'); + SELECT rowid FROM t5 WHERE t5 MATCH 'x*'; +} {-9223372036854775807 2147483647} + finish_test diff --git a/manifest b/manifest index 90c07579bb..a5ad01d3b3 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\ssome\sfts5\scases\swhere\sall\scolumns\sare\sexcluded\sby\sa\scolumn\sfilter\s(so\sthat\sno\srows\smatch).\sReport\s[bugs:/info/2026-08-23T16:25:44Z\s|\s2026-08-23T16:25:44Z]. -D 2026-08-24T18:24:44.948 +C Avoid\sa\stechnically\sundefined\ssigned\sinteger\soverflow\sin\sfts5.\sReport\s[bugs:/info/2026-08-23T16:25:44Z\s|\s2026-08-23T16:25:44Z]. +D 2026-08-24T18:55:06.514 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -114,7 +114,7 @@ F ext/fts5/fts5_buffer.c dcc3f0352339fe79c9d8abbc1c2009bc3469206467880bf43558447 F ext/fts5/fts5_config.c bfba970fe1e4eed18ee57c8d51458e226db9a960ddf775c5e50e3d76603a667e F ext/fts5/fts5_expr.c b906c59e9e842805cc3eea4e131b822e586bb01260e542f67920c61798dcb53d F ext/fts5/fts5_hash.c 341a08ad0153b397b819ef3d7a7959c1dc3c84a6988a431d93dece8bd62ae10e -F ext/fts5/fts5_index.c 68e061b19c4c308de24183c3ca0d1b4676e07a41be916227ad4c1c6a971ab1c8 +F ext/fts5/fts5_index.c fe37868b748d08ac704b42cae18766c37cce543f6bd87d511e0c988dc593c54d F ext/fts5/fts5_main.c 7819fc80808a135c3ad7bec65071a053827d1e8fe7b77ddfd734ed451c2db7a9 F ext/fts5/fts5_storage.c 46b0024fdd8002fbfba162230e5cc212c8f019ba4075396860354bfaf549a546 F ext/fts5/fts5_tcl.c aed8905b1a3c6ecc94da15e9cc54d889045b9eacecc7a17b6fcc1294225f7716 @@ -214,7 +214,7 @@ F ext/fts5/test/fts5locale.test e662cc85b348d27247a7881409d1d1a5f910686c01659109 F ext/fts5/test/fts5matchinfo.test bc9e74157773db7f00aec1e85587f1145956ebdf1672c136f0f04323b2752aa0 F ext/fts5/test/fts5merge.test 088133e135ef7dcd6701753c95b8b10be3c52fa1a99507933e00756d6437489e F ext/fts5/test/fts5merge2.test 3ebad1a59d6ad3fb66eff6523a09e95dc6367cbefb3cd73196801dea0425c8e2 -F ext/fts5/test/fts5misc.test 83d6c5101a092c5db8fb631cfdd69a6482e20528b2750427641ac9050d9d0381 +F ext/fts5/test/fts5misc.test 2fc3afbe0c8028fcfd459317d488bdac93ed2511176cfc0115ceca6c9e4474a2 F ext/fts5/test/fts5multi.test a15bc91cdb717492e6e1b66fec1c356cb57386b980c7ba5af1915f97fe878581 F ext/fts5/test/fts5multiclient.test 5ff811c028d6108045ffef737f1e9f05028af2458e456c0937c1d1b8dea56d45 F ext/fts5/test/fts5near.test b173a56a3c45ac9fdd1626db2ddf923c42632489a4ccedfe68a806c1a0734286 @@ -2219,8 +2219,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P a832bc1ef270365658b60aa4eece35bad1fe26725a45453b302cc7a06cc46cc6 -R afda8e5001838269849d753780123463 +P 7c9b711fc8c2c714ff8709750773c49dba1c6e4f39700806ebf59e6a094bf32d +R 823cc4d6a724f9283c90dbdd8d40c9b0 U dan -Z a4ca9063be21eb2aaa36164edf48daf0 +Z c0a74de1ec948811382301a8352bcba8 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 03181e7378..4809f47deb 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7c9b711fc8c2c714ff8709750773c49dba1c6e4f39700806ebf59e6a094bf32d +cde23480be10e2da6acb357d39e129b314429640143034b9e2207719dcf18350