Refusing to read beyond media_read_capacity

This commit is contained in:
Thomas Schmitt 2009-09-18 16:18:37 +00:00
parent 87f67a9267
commit b001fd6ed6
3 changed files with 14 additions and 1 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2009.09.18.161214"
#define Cdrskin_timestamP "2009.09.18.161944"

View File

@ -549,6 +549,7 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
0x0002016f (DEBUG,HIGH) = Unable to grab scanned drive
0x00020170 (NOTE,HIGH) = Closing open session before writing new one
0x00020171 (NOTE,HIGH) = Closing BD-R with accidently open session
0x00020172 (SORRY,HIGH) = Read start address larger than number of readable blocks
libdax_audioxtr:

View File

@ -370,6 +370,18 @@ int burn_read_data(struct burn_drive *d, off_t byte_address,
msg, 0, 0);
return 0;
}
if (d->media_read_capacity != 0x7fffffff && byte_address >=
((off_t) d->media_read_capacity + (off_t) 1) * (off_t) 2048) {
sprintf(msg,
"Read start address %ds larger than number of readable blocks %d",
(int) (byte_address / 2048 + !!(byte_address % 2048)),
d->media_read_capacity);
libdax_msgs_submit(libdax_messenger, d->global_index,
0x00020172,
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
msg, 0, 0);
return 0;
}
if (d->busy != BURN_DRIVE_IDLE) {
libdax_msgs_submit(libdax_messenger,