]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a NULL pointer dereference in the obscure (and unused) prefixes
authordrh <>
Mon, 18 May 2026 23:58:14 +0000 (23:58 +0000)
committerdrh <>
Mon, 18 May 2026 23:58:14 +0000 (23:58 +0000)
extension, which I had forgotten even existed.
[bugs:/forumpost/24a33e5d10|Bug report 24a33e5d10].

FossilOrigin-Name: 4880adc053b0f21633936347fd5610e4338b15da39607d8ba5a6b32d1516e8cb

ext/misc/prefixes.c
manifest
manifest.uuid
test/prefixes.test

index 3c47933c0652be842d0814798a65db0615da5269..9637b92fbe9453ab81def36258beac64e20d5aea 100644 (file)
@@ -289,6 +289,10 @@ static void prefixLengthFunc(
   int nL = sqlite3_value_bytes(apVal[0]);
   int nR = sqlite3_value_bytes(apVal[1]);
   int i;
+  if( zL==0 || zR==0 ){
+    sqlite3_result_int(ctx, 0);
+    return;
+  }
 
   nByte = (nL > nR ? nL : nR);
   for(i=0; i<nByte; i++){
index 3850f019e383cd2af49e24a73745e8f1382476f6..c871510a6e2a524dc1713b086bde89aaf6651ac8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\soff-by-one\serror\sin\smatchinfo('b')\sfor\sFTS3\swhen\sthere\sare\sa\slarge\nnumber\sof\scolumns.\n[bugs:/forumpost/42d5f799d1|Bug\sreport\s42d5f799d1].
-D 2026-05-18T21:45:06.667
+C Fix\sa\sNULL\spointer\sdereference\sin\sthe\sobscure\s(and\sunused)\sprefixes\nextension,\swhich\sI\shad\sforgotten\seven\sexisted.\n[bugs:/forumpost/24a33e5d10|Bug\sreport\s24a33e5d10].
+D 2026-05-18T23:58:14.244
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -388,7 +388,7 @@ F ext/misc/noop.c f1a21cc9b7a4e667e5c8458d80ba680b8bd4315a003f256006046879f679c5
 F ext/misc/normalize.c fbb144a861809686ff2b5b6eee8bb2e1207f9bf13ce7376e5273c700a1eafbd5
 F ext/misc/pcachetrace.c f4227ce03fb16aa8d6f321b72dd051097419d7a028a9853af048bee7645cb405
 F ext/misc/percentile.c 72e05a21db20a2fa85264b99515941f00ae698824c9db82d7edfbb16cea8ec80
-F ext/misc/prefixes.c aa15fd268e7d1336d1a1d4bc79265860d1d2ad68bba4cbcab61f83e4989dc68c
+F ext/misc/prefixes.c efc261429fd8ab43cedc0d38b94d86d87437af5550651bceb618bd7e84e25125
 F ext/misc/qpvtab.c 470a5fffba005c8e1994209e59c1848122351e19522de71beb68d666c4fa39a5
 F ext/misc/randomjson.c ef835fc64289e76ac4873b85fe12f9463a036168d7683cf2b773e36e6262c4ed
 F ext/misc/regexp.c 378e6e84516952a4b9f3f4df88927f20e6538e2609f55b773ed78899dab8206e
@@ -1519,7 +1519,7 @@ F test/pragma4.test 396ef9bff1fb966d41721545ad4b12bfc26aae315f5fe51d9b917828d49e
 F test/pragma5.test 7b33fc43e2e41abf17f35fb73f71b49671a380ea92a6c94b6ce530a25f8d9102
 F test/pragma6.test c5ec577ba087954b4dfa619a3cbe97b155b60a0af487527abe89b10fc17e6512
 F test/pragmafault.test 275edaf3161771d37de60e5c2b412627ac94cef11739236bec12ed1258b240f8
-F test/prefixes.test b524a1c44bffec225b9aec98bd728480352aa8532ac4c15771fb85e8beef65d9
+F test/prefixes.test f2c4f30d5d439ca203ec69d72f5e1cc408916104e5310423542faef8003cf013
 F test/printf.test 854ddc19b31e83de41142a6b0c8dbb812fcdbbb127cdcafc0c5efef58b790eee
 F test/printf2.test 3f55c1871a5a65507416076f6eb97e738d5210aeda7595a74ee895f2224cce60
 F test/progress.test ebab27f670bd0d4eb9d20d49cef96e68141d92fb
@@ -2205,8 +2205,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P adcb44f9dcfd34df4cf4f5cc418ecac9f2ca09723442379dfedcba532c45de77
-R 7688428400c215e501f1a8e9e22db88b
+P c0f2cd6d292bb3554539a309a2ecfa0a12f0248cfcbb5594391607b107a62cd2
+R 27d88e7229b9ddb4bdedc834047f3737
 U drh
-Z 3cd77330141a4fe26eb9e6c7810fb911
+Z 95a536c6d276b5c6e9abb39166643759
 # Remove this line to create a well-formed Fossil manifest.
index 4931ab287608b09481a33f2964a80ba9c2f48719..2675673beb16b648e88c55bbe6519943f27047c5 100644 (file)
@@ -1 +1 @@
-c0f2cd6d292bb3554539a309a2ecfa0a12f0248cfcbb5594391607b107a62cd2
+4880adc053b0f21633936347fd5610e4338b15da39607d8ba5a6b32d1516e8cb
index 2080905805c8b118ec768745a1001d9d9701033f..5a9940ce1c961ef782eebd4c2b7125ad393b34a9 100644 (file)
@@ -14,7 +14,7 @@
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
-set testprefix unionvtab
+set testprefix prefixes
 
 ifcapable !vtab {
   finish_test
@@ -85,4 +85,12 @@ foreach {tn INPUT expected} {
   } $expected
 }
 
+do_execsql_test 3.1 {
+  SELECT prefix_length(null,'abc');
+} 0
+do_execsql_test 3.2 {
+  SELECT prefix_length('abc',null);
+} 0
+
+
 finish_test