summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
authorMichael Brown2017-03-22 10:45:28 +0100
committerMichael Brown2017-03-22 10:45:28 +0100
commite846bd22c35fbbb0567c97896627b33f9f5c717b (patch)
tree393cf5199cbbf4afed5f0cc953da130c3daff055 /src/core
parent[infiniband] Return status code from ib_create_mi() (diff)
downloadipxe-e846bd22c35fbbb0567c97896627b33f9f5c717b.tar.gz
ipxe-e846bd22c35fbbb0567c97896627b33f9f5c717b.tar.xz
ipxe-e846bd22c35fbbb0567c97896627b33f9f5c717b.zip
[block] Quell spurious Coverity size mismatch warning
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/sanboot.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/core/sanboot.c b/src/core/sanboot.c
index 95fa5c4e..88d254ff 100644
--- a/src/core/sanboot.c
+++ b/src/core/sanboot.c
@@ -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;
@@ -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",
@@ -505,7 +508,8 @@ 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;
@@ -513,7 +517,7 @@ static int sandev_parse_iso9660 ( struct san_device *sandev ) {
}
err_rw:
- free ( primary );
+ free ( scratch );
err_alloc:
invalid_blksize:
return rc;