Letting isoburn_disc_erase() invalidate UDF extended descriptors if present

This commit is contained in:
Thomas Schmitt 2016-05-03 07:57:32 +00:00
parent 9e948afdf6
commit a5cbf0123e
2 changed files with 23 additions and 2 deletions

View File

@ -670,11 +670,32 @@ ex:;
*/ */
int isoburn_invalidate_iso(struct isoburn *o, int flag) int isoburn_invalidate_iso(struct isoburn *o, int flag)
{ {
int end_ed_found= 0, i;
char *head;
head= (char *) o->target_iso_head;
/* /*
* replace CD001 with CDXX1 in PVM. * replace CD001 with CDXX1 in PVM.
* I think this is enought for invalidating an iso image * I think this is enought for invalidating an iso image
*/ */
strncpy((char*)o->target_iso_head + 16 * 2048 + 1, "CDXX1", 5); strncpy(head + 16 * 2048 + 1, "CDXX1", 5);
/* Look for UDF volume recognition sequence and invalidate */
for(i= 17 * 2048; i < 32 * 2048; i+= 2048) {
if(end_ed_found) {
if(head[i] == 0 && strncmp(head + i + 1, "BEA01", 5) == 0)
strncpy(head + i + 1, "BEAX1", 5);
else if(head[i] == 0 && strncmp(head + i + 1, "NSR", 3) == 0)
strncpy(head + i + 1, "NSRX", 4);
else if(head[i] == 0 && strncmp(head + i + 1, "TEA", 3) == 0)
strncpy(head + i + 1, "TEAX", 4);
} else {
if(((unsigned char *) head)[i] == 0xff &&
strncmp(head + i + 1, "CD001", 5) == 0)
end_ed_found= 1;
}
}
return isoburn_activate_session(o->drive); return isoburn_activate_session(o->drive);
} }

View File

@ -1 +1 @@
#define Xorriso_timestamP "2016.04.27.092902" #define Xorriso_timestamP "2016.05.03.075722"