Fossil SCM

Call fossil_fatal() in svn import when trying to import an empty blob, rather than stepping on NULL later. Reported in [forum:15d4b242bda2a108|forum post 15d4b242bda2a108].

stephan 2024-05-27 11:28 trunk
Commit 05ae1fe2fedcec7bd48b20f30ea8d95f3dbeb1dff83982e43489e7b90f29b6b3
1 file changed +7 -1
+7 -1
--- src/import.c
+++ src/import.c
@@ -1248,11 +1248,17 @@
12481248
zOut = blob_buffer(pOut)+lenOld;
12491249
while( zDiff<zInst+lenInst ){
12501250
u64 lenCpy = (*zDiff)&0x3f;
12511251
const char *zCpy;
12521252
switch( (*zDiff)&0xC0 ){
1253
- case 0x00: zCpy = blob_buffer(pSrc)+offSrc; break;
1253
+ case 0x00:
1254
+ if( 0==blob_size(pSrc) ){
1255
+ /* https://fossil-scm.org/forum/forumpost/15d4b242bda2a108 */
1256
+ fossil_fatal("Don't know how to handle NULL input");
1257
+ }
1258
+ zCpy = blob_buffer(pSrc)+offSrc;
1259
+ break;
12541260
case 0x40: zCpy = blob_buffer(pOut); break;
12551261
case 0x80: zCpy = zData; break;
12561262
default: fossil_fatal("Invalid svndiff0 instruction");
12571263
}
12581264
zDiff++;
12591265
--- src/import.c
+++ src/import.c
@@ -1248,11 +1248,17 @@
1248 zOut = blob_buffer(pOut)+lenOld;
1249 while( zDiff<zInst+lenInst ){
1250 u64 lenCpy = (*zDiff)&0x3f;
1251 const char *zCpy;
1252 switch( (*zDiff)&0xC0 ){
1253 case 0x00: zCpy = blob_buffer(pSrc)+offSrc; break;
 
 
 
 
 
 
1254 case 0x40: zCpy = blob_buffer(pOut); break;
1255 case 0x80: zCpy = zData; break;
1256 default: fossil_fatal("Invalid svndiff0 instruction");
1257 }
1258 zDiff++;
1259
--- src/import.c
+++ src/import.c
@@ -1248,11 +1248,17 @@
1248 zOut = blob_buffer(pOut)+lenOld;
1249 while( zDiff<zInst+lenInst ){
1250 u64 lenCpy = (*zDiff)&0x3f;
1251 const char *zCpy;
1252 switch( (*zDiff)&0xC0 ){
1253 case 0x00:
1254 if( 0==blob_size(pSrc) ){
1255 /* https://fossil-scm.org/forum/forumpost/15d4b242bda2a108 */
1256 fossil_fatal("Don't know how to handle NULL input");
1257 }
1258 zCpy = blob_buffer(pSrc)+offSrc;
1259 break;
1260 case 0x40: zCpy = blob_buffer(pOut); break;
1261 case 0x80: zCpy = zData; break;
1262 default: fossil_fatal("Invalid svndiff0 instruction");
1263 }
1264 zDiff++;
1265

Keyboard Shortcuts

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