From 56ecab0f85e8f67aa0041dc71a809c9fa5f9c2ff Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Wed, 25 Jul 2012 18:27:01 +0000 Subject: [PATCH] Bug fix: SIGSEGV by uninitialized local variable with -check_media patch_lba0="on". Regression by version 1.0.6 --- libisoburn/trunk/xorriso/write_run.c | 15 +++++++++------ libisoburn/trunk/xorriso/xorriso_timestamp.h | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/libisoburn/trunk/xorriso/write_run.c b/libisoburn/trunk/xorriso/write_run.c index b93ece37..4b46c074 100644 --- a/libisoburn/trunk/xorriso/write_run.c +++ b/libisoburn/trunk/xorriso/write_run.c @@ -2425,7 +2425,7 @@ int Xorriso_update_iso_lba0(struct XorrisO *xorriso, int iso_lba, int isosize, int ret, full_size, i; char *headpt; struct burn_drive_info *dinfo; - struct burn_drive *drive; + struct burn_drive *drive = NULL; off_t seek_ret, to_write; int tag_type; uint32_t pos, range_start, range_size, next_tag; @@ -2455,8 +2455,9 @@ int Xorriso_update_iso_lba0(struct XorrisO *xorriso, int iso_lba, int isosize, if(!(flag & 2)) { /* head_buffer was not filled yet. Read it from output media. */ - if(burn_drive_get_drive_role(drive) == 5) /* write-only */ - return(2); + if(drive != NULL) + if(burn_drive_get_drive_role(drive) == 5) /* write-only */ + return(2); if(job != NULL && job->data_to_fd >= 0) { if((flag & 8) && job->sector_map != NULL) { ret= Sectorbitmap_bytes_are_set(job->sector_map, @@ -2484,16 +2485,18 @@ int Xorriso_update_iso_lba0(struct XorrisO *xorriso, int iso_lba, int isosize, Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE",0); return(0); } - ret= isoburn_read_iso_head(drive, 0, &isosize, head_buffer, 1 << 13); + ret= isoburn_read_iso_head(NULL, 0, &isosize, head_buffer, 1 << 13); if(ret<=0) { Xorriso_process_msg_queues(xorriso,0); sprintf(xorriso->info_text, - "Alleged session start does not like ISO 9660."); + "Alleged session start does not look like ISO 9660."); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, errno, "FAILURE",0); return(0); } } else { - ret= isoburn_read_iso_head(drive, iso_lba, &isosize, head_buffer, 2); + ret= 0; + if(drive != 0) + ret= isoburn_read_iso_head(drive, iso_lba, &isosize, head_buffer, 2); if(ret<=0) { Xorriso_process_msg_queues(xorriso,0); sprintf(xorriso->info_text, diff --git a/libisoburn/trunk/xorriso/xorriso_timestamp.h b/libisoburn/trunk/xorriso/xorriso_timestamp.h index d0257c69..10ea28b0 100644 --- a/libisoburn/trunk/xorriso/xorriso_timestamp.h +++ b/libisoburn/trunk/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2012.07.25.181415" +#define Xorriso_timestamP "2012.07.25.182507"