Fossil SCM

Fix a possible one-byte OOB read when processing a corrupt delta. [https://sqlite.org/bugs/info/2026-07-04T04:53:59Z|SQLite Bug 2026-07-04T04:53:59Z]

drh 2026-07-04 09:23 UTC trunk
Commit 146cdcd9cb5bf8faf496ad8b439e1f9e090a2f038e9a5c8256b8ea69831540eb
1 file changed +1 -1
+1 -1
--- src/delta.c
+++ src/delta.c
@@ -684,11 +684,11 @@
684684
if( lenDelta<=0 || *zDelta!='\n' ){
685685
/* ERROR: size integer not terminated by "\n" */
686686
return -1;
687687
}
688688
zDelta++; lenDelta--;
689
- while( *zDelta && lenDelta>0 ){
689
+ while( lenDelta>0 && *zDelta ){
690690
unsigned int cnt;
691691
cnt = getInt(&zDelta, &lenDelta);
692692
if( lenDelta<=0 ) break;
693693
switch( zDelta[0] ){
694694
case '@': {
695695
--- src/delta.c
+++ src/delta.c
@@ -684,11 +684,11 @@
684 if( lenDelta<=0 || *zDelta!='\n' ){
685 /* ERROR: size integer not terminated by "\n" */
686 return -1;
687 }
688 zDelta++; lenDelta--;
689 while( *zDelta && lenDelta>0 ){
690 unsigned int cnt;
691 cnt = getInt(&zDelta, &lenDelta);
692 if( lenDelta<=0 ) break;
693 switch( zDelta[0] ){
694 case '@': {
695
--- src/delta.c
+++ src/delta.c
@@ -684,11 +684,11 @@
684 if( lenDelta<=0 || *zDelta!='\n' ){
685 /* ERROR: size integer not terminated by "\n" */
686 return -1;
687 }
688 zDelta++; lenDelta--;
689 while( lenDelta>0 && *zDelta ){
690 unsigned int cnt;
691 cnt = getInt(&zDelta, &lenDelta);
692 if( lenDelta<=0 ) break;
693 switch( zDelta[0] ){
694 case '@': {
695

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button