From 1e4e51edfeec101f7c325d8e60569889dbae4a0d Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Thu, 1 Apr 2010 14:07:59 +0000 Subject: [PATCH] libisoburn refused to recognize ISO images smaller than 64 kB --- libisoburn/burn_wrap.c | 14 +++++++++----- xorriso/xorriso_timestamp.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) 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"