Fossil SCM
Avoid a NULL pointer deref in vfile_build() when a delta manifest contains a deleted file.
Commit
a35e8c0db14c09a7d7b3079c932e0620a292bf03
Parent
c67c61b6944bf5a…
1 file changed
+1
+1
| --- src/vfile.c | ||
| +++ src/vfile.c | ||
| @@ -114,10 +114,11 @@ | ||
| 114 | 114 | "INSERT INTO vfile(vid,rid,mrid,pathname) " |
| 115 | 115 | " VALUES(:vid,:id,:id,:name)"); |
| 116 | 116 | db_bind_int(&ins, ":vid", vid); |
| 117 | 117 | manifest_file_rewind(p); |
| 118 | 118 | while( (pFile = manifest_file_next(p,0))!=0 ){ |
| 119 | + if( pFile->zUuid==0 ) continue; | |
| 119 | 120 | rid = uuid_to_rid(pFile->zUuid, 0); |
| 120 | 121 | vfile_verify_not_phantom(rid, pFile->zName, pFile->zUuid); |
| 121 | 122 | db_bind_int(&ins, ":id", rid); |
| 122 | 123 | db_bind_text(&ins, ":name", pFile->zName); |
| 123 | 124 | db_step(&ins); |
| 124 | 125 |
| --- src/vfile.c | |
| +++ src/vfile.c | |
| @@ -114,10 +114,11 @@ | |
| 114 | "INSERT INTO vfile(vid,rid,mrid,pathname) " |
| 115 | " VALUES(:vid,:id,:id,:name)"); |
| 116 | db_bind_int(&ins, ":vid", vid); |
| 117 | manifest_file_rewind(p); |
| 118 | while( (pFile = manifest_file_next(p,0))!=0 ){ |
| 119 | rid = uuid_to_rid(pFile->zUuid, 0); |
| 120 | vfile_verify_not_phantom(rid, pFile->zName, pFile->zUuid); |
| 121 | db_bind_int(&ins, ":id", rid); |
| 122 | db_bind_text(&ins, ":name", pFile->zName); |
| 123 | db_step(&ins); |
| 124 |
| --- src/vfile.c | |
| +++ src/vfile.c | |
| @@ -114,10 +114,11 @@ | |
| 114 | "INSERT INTO vfile(vid,rid,mrid,pathname) " |
| 115 | " VALUES(:vid,:id,:id,:name)"); |
| 116 | db_bind_int(&ins, ":vid", vid); |
| 117 | manifest_file_rewind(p); |
| 118 | while( (pFile = manifest_file_next(p,0))!=0 ){ |
| 119 | if( pFile->zUuid==0 ) continue; |
| 120 | rid = uuid_to_rid(pFile->zUuid, 0); |
| 121 | vfile_verify_not_phantom(rid, pFile->zName, pFile->zUuid); |
| 122 | db_bind_int(&ins, ":id", rid); |
| 123 | db_bind_text(&ins, ":name", pFile->zName); |
| 124 | db_step(&ins); |
| 125 |