diff --git a/libisoburn/burn_wrap.c b/libisoburn/burn_wrap.c index b820b9ec..b6fd1687 100644 --- a/libisoburn/burn_wrap.c +++ b/libisoburn/burn_wrap.c @@ -1070,7 +1070,7 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba, { unsigned char buffer[64*1024]; int ret, info_mode, capacity, role; - off_t data_count; + off_t data_count, to_read; info_mode= flag&255; *image_blocks= 0; @@ -1085,11 +1085,15 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba, capacity = 0x7ffffff0; ret = 1; } - if(ret > 0 && (off_t) capacity * (off_t) 2048 >= (off_t) (64 * 1024)) { + memset(buffer, 0, 64 * 1024); + to_read= capacity * 2048; + if(ret > 0 && to_read >= (off_t) (36 * 1024)) { + if(to_read >= (off_t) (64 * 1024)) + to_read= 64 * 1024; ret = burn_read_data(d, ((off_t) lba) * (off_t) 2048, (char *) buffer, - (off_t) 64*1024, &data_count, 2); /* no error messages */ - } else - ret= 0; + to_read, &data_count, 2); /* no error messages */ + } else + ret= 0; if(ret<=0) return(-1*!!(flag&(1<<15))); if(info_mode==2) diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 017c23a8..e37e04ac 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2010.03.30.082405" +#define Xorriso_timestamP "2010.04.01.140653"