From 5598861309baa17a6d99dded083c366779b43754 Mon Sep 17 00:00:00 2001 From: Vreixo Formoso Lopes Date: Mon, 1 Oct 2007 14:12:48 +0000 Subject: [PATCH] Taken into account wrong nwa from buggy drives. --- src/isoburn.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/isoburn.c b/src/isoburn.c index b0619a46..3fc043d3 100644 --- a/src/isoburn.c +++ b/src/isoburn.c @@ -233,12 +233,19 @@ int isoburn_prepare_disc_aux(struct burn_drive *d, struct burn_disc **disc, struct burn_track *track; struct isoburn *o; struct ecma119_source_opts wopts; + enum burn_disc_status state; int ret; ret= isoburn_find_emulator(&o, d, 0); if(ret<0) return -1; - + + state = isoburn_disc_get_status(drive); + if (state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE) { + /* unsuitable status */ + return -2; + } + wopts.volnum = 0; wopts.level = opts->level; wopts.flags = opts->flags; @@ -264,7 +271,12 @@ int isoburn_prepare_disc_aux(struct burn_drive *d, struct burn_disc **disc, int lba, nwa; ret = isoburn_disc_track_lba_nwa(d, NULL, 0, &lba, &nwa); if (ret != 1) - return -2; + return -3; + if (nwa == 0 && state == BURN_DISC_APPENDABLE) { + /* invalid nwa */ + return -4; + } + wopts.ms_block = nwa; }