# HG changeset patch # User nkeynes # Date 1146399751 0 # Node ID d26f4899898d2e2b517ffffcc2831a077df6f382 # Parent 128f569e004eb673915f67ad9b036210e447fa42 Fix IDENTIFY to be non-completely-broken --- a/src/gdrom/ide.c Sun Apr 30 01:51:29 2006 +0000 +++ b/src/gdrom/ide.c Sun Apr 30 12:22:31 2006 +0000 @@ -1,5 +1,5 @@ /** - * $Id: ide.c,v 1.9 2006-04-30 01:51:08 nkeynes Exp $ + * $Id: ide.c,v 1.10 2006-04-30 12:22:31 nkeynes Exp $ * * IDE interface implementation * @@ -234,10 +234,15 @@ /* NB: Bios sets cmd[4] = 0x08, no idea what this is for; * different values here appear to have no effect. */ - length = *((uint16_t*)(cmd+2)); - if( length > sizeof(gdrom_ident) ) - length = sizeof(gdrom_ident); - ide_set_read_buffer(gdrom_ident, length, blocksize); + lba = cmd[2]; + if( lba >= sizeof(gdrom_ident) ) { + ide_set_error(0x50); + return; + } + length = cmd[4]; + if( lba+length > sizeof(gdrom_ident) ) + length = sizeof(gdrom_ident) - lba; + ide_set_read_buffer(gdrom_ident + lba, length, blocksize); break; case PKT_CMD_READ_TOC: if( !gdrom_get_toc( data_buffer ) ) {