|
|
@ -192,8 +192,9 @@ invalidybegin: |
|
|
|
continue; |
|
|
|
} |
|
|
|
l=filename-line+6; |
|
|
|
if (!(filename=strstr(line," part="))) goto invalidybegin; |
|
|
|
if (filename[6+scan_ulong(filename+6,&part)] != ' ') goto invalidybegin; |
|
|
|
if (!(filename=strstr(line," part="))) { |
|
|
|
part=1; |
|
|
|
} else if (filename[6+scan_ulong(filename+6,&part)] != ' ') goto invalidybegin; |
|
|
|
if (part==1) reconstructed=0; |
|
|
|
if (!(filename=strstr(line," size="))) goto invalidybegin; |
|
|
|
if (filename[6+scan_ulong(filename+6,&totalsize)] != ' ') goto invalidybegin; |
|
|
@ -227,9 +228,16 @@ invalidpart: |
|
|
|
stralloc out; |
|
|
|
char* tmp=strstr(line," pcrc32="); |
|
|
|
|
|
|
|
if (!tmp) goto invalidpart; |
|
|
|
if (!scan_xlong(tmp+8,&wantedcrc)) |
|
|
|
goto invalidpart; |
|
|
|
if (tmp) { |
|
|
|
if (!scan_xlong(tmp+8,&wantedcrc)) |
|
|
|
goto invalidpart; |
|
|
|
} else if (part==1) { |
|
|
|
tmp=strstr(line," crc32="); |
|
|
|
if (!tmp) goto invalidpart; |
|
|
|
if (!scan_xlong(tmp+7,&wantedcrc)) |
|
|
|
goto invalidpart; |
|
|
|
endoffset=totalsize; |
|
|
|
} else goto invalidpart; |
|
|
|
stralloc_init(&out); |
|
|
|
stralloc_0(¥cpart); |
|
|
|
stralloc_ready(&out,yencpart.len); |
|
|
@ -258,6 +266,7 @@ invalidpart: |
|
|
|
buffer_puts(buffer_2,"warning: part "); |
|
|
|
buffer_putulong(buffer_2,part); |
|
|
|
buffer_putsflush(buffer_2," corrupt; reconstruction failed.\n"); |
|
|
|
buffer_put(&fileout,out.s,out.len); |
|
|
|
} |
|
|
|
} |
|
|
|
stralloc_free(&out); |
|
|
|