Fossil SCM
Fix a segfault that can occur if a corrupt delta gets into the archive.
Commit
b9a744e1c4d842a289a9cb350085ca4935633e83
Parent
ed1037e22592b5d…
1 file changed
+1
+1
| --- src/deltacmd.c | ||
| +++ src/deltacmd.c | ||
| @@ -85,10 +85,11 @@ | ||
| 85 | 85 | int len, n; |
| 86 | 86 | Blob out; |
| 87 | 87 | |
| 88 | 88 | n = delta_output_size(blob_buffer(pDelta), blob_size(pDelta)); |
| 89 | 89 | blob_zero(&out); |
| 90 | + if( n<0 ) return -1; | |
| 90 | 91 | blob_resize(&out, n); |
| 91 | 92 | len = delta_apply( |
| 92 | 93 | blob_buffer(pOriginal), blob_size(pOriginal), |
| 93 | 94 | blob_buffer(pDelta), blob_size(pDelta), |
| 94 | 95 | blob_buffer(&out)); |
| 95 | 96 |
| --- src/deltacmd.c | |
| +++ src/deltacmd.c | |
| @@ -85,10 +85,11 @@ | |
| 85 | int len, n; |
| 86 | Blob out; |
| 87 | |
| 88 | n = delta_output_size(blob_buffer(pDelta), blob_size(pDelta)); |
| 89 | blob_zero(&out); |
| 90 | blob_resize(&out, n); |
| 91 | len = delta_apply( |
| 92 | blob_buffer(pOriginal), blob_size(pOriginal), |
| 93 | blob_buffer(pDelta), blob_size(pDelta), |
| 94 | blob_buffer(&out)); |
| 95 |
| --- src/deltacmd.c | |
| +++ src/deltacmd.c | |
| @@ -85,10 +85,11 @@ | |
| 85 | int len, n; |
| 86 | Blob out; |
| 87 | |
| 88 | n = delta_output_size(blob_buffer(pDelta), blob_size(pDelta)); |
| 89 | blob_zero(&out); |
| 90 | if( n<0 ) return -1; |
| 91 | blob_resize(&out, n); |
| 92 | len = delta_apply( |
| 93 | blob_buffer(pOriginal), blob_size(pOriginal), |
| 94 | blob_buffer(pDelta), blob_size(pDelta), |
| 95 | blob_buffer(&out)); |
| 96 |