]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improve robustness against corrupt kvvfs journal files. Addresses bug report [bugs...
authorstephan <stephan@noemail.net>
Tue, 23 Jun 2026 13:26:35 +0000 (13:26 +0000)
committerstephan <stephan@noemail.net>
Tue, 23 Jun 2026 13:26:35 +0000 (13:26 +0000)
FossilOrigin-Name: bd24ea4d76c8d6816ac5177593ee3427b71b0508b5cdc804c29b2ed25405b9c8

manifest
manifest.uuid
src/os_kv.c

index 397a147efcd218fe8ee4ab41bf4f33d7dd3c6cc5..aa5f42af5297805934a826789569cc0a84f5ad59 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sNULL\spointer\sdereference\sthat\scould\soccur\sin\sthe\sunionvtab\svirtual\stable\sif\sthe\sconfiguration\sSQL\sreturned\san\sSQL\sNULL\svalue\sin\splace\sof\sa\stable\sname.\sBug\s[bugs:/info/2026-06-23T05:32:49Z\s|\s2026-06-23T05:32:49Z].
-D 2026-06-23T11:14:45.815
+C Improve\srobustness\sagainst\scorrupt\skvvfs\sjournal\sfiles.\sAddresses\sbug\sreport\s[bugs:f4d88886e6|2026-06-23T06:51:34Z]\sand\sthe\sfirst\sfollow-up\sreport\sin\sthat\sthread.
+D 2026-06-23T13:26:35.723
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -720,7 +720,7 @@ F src/notify.c 57c2d1a2805d6dee32acd5d250d928ab94e02d76369ae057dee7d445fd64e878
 F src/os.c 9566966dd14376099fe8f715e744ab4fef204f55bd89126c5ddd06eb37df9457
 F src/os.h 1ff5ae51d339d0e30d8a9d814f4b8f8e448169304d83a7ed9db66a65732f3e63
 F src/os_common.h 6c0eb8dd40ef3e12fe585a13e709710267a258e2c8dd1c40b1948a1d14582e06
-F src/os_kv.c 26ccc36ea963d328682fa685a106d7404617a2284ecdc7a35fb38d0c9242f440
+F src/os_kv.c 2c62d637a34bdffaad79384c91d7cce4ede53794d01ffff7bf6b1103c1e9d887
 F src/os_setup.h 8efc64eda6a6c2f221387eefc2e7e45fd5a3d5c8337a7a83519ba4fbd2957ae2
 F src/os_unix.c 83759942d1ea8d59daed50901c123016f845fada74caf3496b8a2537c9a08838
 F src/os_win.c 68b1c31693a5aeeb8126f618c95f7b53fb39e254836f9a95fbf2733461a7e01d
@@ -2208,8 +2208,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 256d5cd478b83b1371ce24c9702f732cddb4dd4e06c238fc1a1b853b02ffc1f1
-R 46c7bbb1691ef5b4f4f86cb6634d335b
-U dan
-Z 8b8a29392adc9b4f93ea8d4351255ebe
+P 3a2163f9693086bc494ac899647f09467b1aba905f4db147910f203aaab724f0
+R 4cbfead3c6bacbc97e4c04f9732eca6d
+U stephan
+Z d37f83215a7a8d4a5ffc1b024e7f7270
 # Remove this line to create a well-formed Fossil manifest.
index 900002c1401a76ea37e5ce984c8a41b2088d0374..0c4beaee0460556a3bb9b3eed6d832544adc297c 100644 (file)
@@ -1 +1 @@
-3a2163f9693086bc494ac899647f09467b1aba905f4db147910f203aaab724f0
+bd24ea4d76c8d6816ac5177593ee3427b71b0508b5cdc804c29b2ed25405b9c8
index 566b5a477e903248d28e3274e4b2f1b9b27cddda..3d4be4c7c9e5466806d6396565d6c2f9e11685ae 100644 (file)
@@ -511,18 +511,24 @@ static void kvvfsDecodeJournal(
   const char *zTxt,      /* Text encoding.  Zero-terminated */
   int nTxt               /* Bytes in zTxt, excluding zero terminator */
 ){
-  unsigned int n = 0;
-  int c, i, mult;
+  unsigned int n = 0, mult;
+  int c, i;
   i = 0;
   mult = 1;
-  while( (c = zTxt[i++])>='a' && c<='z' ){
+  sqlite3_free(pFile->aJrnl);
+  pFile->aJrnl = 0;
+  pFile->nJrnl = 0;
+  while( (c = zTxt[i])>='a' && c<='z' ){
     n += (c - 'a')*mult;
     mult *= 26;
+    ++i;
+  }
+  if( ' '!=zTxt[i++] ){
+    /* Malformed input */
+    return;
   }
-  sqlite3_free(pFile->aJrnl);
   pFile->aJrnl = sqlite3_malloc64( n );
   if( pFile->aJrnl==0 ){
-    pFile->nJrnl = 0;
     return;
   }
   pFile->nJrnl = n;