Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[block] Quell spurious Coverity size mismatch warning
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Mar 22, 2017
1 parent c26c1fd commit e846bd2
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions src/core/sanboot.c
Expand Up @@ -466,7 +466,10 @@ static int sandev_parse_iso9660 ( struct san_device *sandev ) {
.type = ISO9660_TYPE_PRIMARY,
.id = ISO9660_ID,
};
struct iso9660_primary_descriptor *primary;
union {
struct iso9660_primary_descriptor primary;
char bytes[ISO9660_BLKSIZE];
} *scratch;
unsigned int blksize;
unsigned int blksize_shift;
unsigned int lba;
Expand All @@ -489,14 +492,14 @@ static int sandev_parse_iso9660 ( struct san_device *sandev ) {
count = ( 1 << blksize_shift );

/* Allocate scratch area */
primary = malloc ( ISO9660_BLKSIZE );
if ( ! primary ) {
scratch = malloc ( ISO9660_BLKSIZE );
if ( ! scratch ) {
rc = -ENOMEM;
goto err_alloc;
}

/* Read primary volume descriptor */
if ( ( rc = sandev_rw ( sandev, lba, count, virt_to_user ( primary ),
if ( ( rc = sandev_rw ( sandev, lba, count, virt_to_user ( scratch ),
block_read ) ) != 0 ) {
DBGC ( sandev, "SAN %#02x could not read ISO9660 primary"
"volume descriptor: %s\n",
Expand All @@ -505,15 +508,16 @@ static int sandev_parse_iso9660 ( struct san_device *sandev ) {
}

/* Configure as CD-ROM if applicable */
if ( memcmp ( primary, &primary_check, sizeof ( primary_check ) ) == 0){
if ( memcmp ( &scratch->primary.fixed, &primary_check,
sizeof ( primary_check ) ) == 0 ) {
DBGC ( sandev, "SAN %#02x contains an ISO9660 filesystem; "
"treating as CD-ROM\n", sandev->drive );
sandev->blksize_shift = blksize_shift;
sandev->is_cdrom = 1;
}

err_rw:
free ( primary );
free ( scratch );
err_alloc:
invalid_blksize:
return rc;
Expand Down

0 comments on commit e846bd2

Please sign in to comment.