|
|
|
@ -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;
|
|
|
|
|