|
|
|
@ -429,7 +429,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
|
|
|
|
if(xorriso->img_read_error_mode==2) |
|
|
|
|
sev= "FATAL"; |
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, sev, 0); |
|
|
|
|
if(read_ret == ISO_SB_TREE_CORRUPTED && (xorriso->do_md5 & 1)) { |
|
|
|
|
if(read_ret == (int) ISO_SB_TREE_CORRUPTED && (xorriso->do_md5 & 1)) { |
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, |
|
|
|
|
"This might be false MD5 alarm if an add-on session was written by growisofs.", |
|
|
|
|
0, "HINT", 0); |
|
|
|
@ -1113,14 +1113,14 @@ int Xorriso_show_devices(struct XorrisO *xorriso, int flag)
|
|
|
|
|
sprintf(xorriso->info_text, "-----------------------------------------------------------------------------\n"); |
|
|
|
|
Xorriso_info(xorriso,0); |
|
|
|
|
respt= xorriso->result_line; |
|
|
|
|
for(i= 0; i < drive_count && !(xorriso->request_to_abort); i++) { |
|
|
|
|
for(i= 0; i < (int) drive_count && !(xorriso->request_to_abort); i++) { |
|
|
|
|
if(burn_drive_get_adr(&(drive_list[i]), adr)<=0) |
|
|
|
|
strcpy(adr, "-get_adr_failed-"); |
|
|
|
|
Xorriso_process_msg_queues(xorriso,0); |
|
|
|
|
if(strlen(adr)>max_dev_len) |
|
|
|
|
if((int) strlen(adr) > max_dev_len) |
|
|
|
|
max_dev_len= strlen(adr); |
|
|
|
|
} |
|
|
|
|
for(i= 0; i < drive_count && !(xorriso->request_to_abort); i++) { |
|
|
|
|
for(i= 0; i < (int) drive_count && !(xorriso->request_to_abort); i++) { |
|
|
|
|
if(burn_drive_get_adr(&(drive_list[i]), adr)<=0) |
|
|
|
|
strcpy(adr, "-get_adr_failed-"); |
|
|
|
|
Xorriso_process_msg_queues(xorriso,0); |
|
|
|
@ -1865,21 +1865,23 @@ abort_check:;
|
|
|
|
|
if(ctx != NULL) { |
|
|
|
|
for(j= 0; j < to_read; j++) { |
|
|
|
|
lba= i + j + from_lba; |
|
|
|
|
if(lba < md5_start) |
|
|
|
|
if(lba < (uint32_t) md5_start) |
|
|
|
|
continue; |
|
|
|
|
ret= 0; |
|
|
|
|
if(lba > md5_start + 16 && |
|
|
|
|
if(lba > (uint32_t) (md5_start) + 16 && |
|
|
|
|
(next_tag == 0 || chain_broken || lba == next_tag)) { |
|
|
|
|
ret= iso_util_decode_md5_tag(data + j * 2048, &tag_type, |
|
|
|
|
&pos, &range_start, &range_size, |
|
|
|
|
&next_tag, tag_md5, !!chain_broken); |
|
|
|
|
} |
|
|
|
|
valid= (ret == 1 || ret == ISO_MD5_AREA_CORRUPTED) && pos == lba; |
|
|
|
|
if(valid && tag_type == 2 && (lba < md5_start + 32 || in_track_gap)) { |
|
|
|
|
valid= (ret == 1 || ret == (int) ISO_MD5_AREA_CORRUPTED) && |
|
|
|
|
pos == lba; |
|
|
|
|
if(valid && tag_type == 2 && (lba < ((uint32_t) md5_start) + 32 || |
|
|
|
|
in_track_gap)) { |
|
|
|
|
tag_type_name= "superblock"; |
|
|
|
|
was_sb_tag= 1; |
|
|
|
|
if(in_track_gap && range_start != md5_start && range_start < lba && |
|
|
|
|
lba - range_start <= j) { |
|
|
|
|
if(in_track_gap && range_start != ((uint32_t) md5_start) && |
|
|
|
|
range_start < lba && lba - range_start <= (uint32_t) j) { |
|
|
|
|
/* Looking for next session : start computing in hindsight.
|
|
|
|
|
Session start and superblock tag are supposed to be in the |
|
|
|
|
same 64 kB chunk. |
|
|
|
@ -1908,7 +1910,7 @@ abort_check:;
|
|
|
|
|
tag_type_name= ""; |
|
|
|
|
} |
|
|
|
|
if (tag_type_name[0]) { |
|
|
|
|
if(range_start != md5_start) { |
|
|
|
|
if(range_start != (uint32_t) md5_start) { |
|
|
|
|
sprintf(xorriso->info_text, |
|
|
|
|
"Found MD5 %s tag which covers different data range", |
|
|
|
|
tag_type_name); |
|
|
|
@ -1927,7 +1929,7 @@ abort_check:;
|
|
|
|
|
} |
|
|
|
|
iso_md5_end(&cloned_ctx, md5); |
|
|
|
|
|
|
|
|
|
if(ret == ISO_MD5_AREA_CORRUPTED) { |
|
|
|
|
if(ret == (int) ISO_MD5_AREA_CORRUPTED) { |
|
|
|
|
comparison= "CORRUPTED"; |
|
|
|
|
sev_text= "WARNING"; |
|
|
|
|
md5_spot_value= Xorriso_read_quality_md5_mismatcH; |
|
|
|
|