Skip to content

Commit

Permalink
[efi] Check for presence of UNDI in NII protocol
Browse files Browse the repository at this point in the history
iPXE itself exposes a dummy NII protocol with no UNDI.  Avoid
potentially dereferencing a NULL pointer by checking for a non-zero
UNDI address.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Oct 17, 2014
1 parent 047baab commit feb3a0f
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/drivers/net/efi/nii.c
Expand Up @@ -1037,6 +1037,11 @@ static int nii_start ( struct efi_device *efidev ) {

/* Locate UNDI and entry point */
nii->undi = ( ( void * ) ( intptr_t ) nii->nii->Id );
if ( ! nii->undi ) {
DBGC ( nii, "NII %s has no UNDI\n", nii->dev.name );
rc = -ENODEV;
goto err_no_undi;
}
if ( nii->undi->Implementation & PXE_ROMID_IMP_HW_UNDI ) {
DBGC ( nii, "NII %s is a mythical hardware UNDI\n",
nii->dev.name );
Expand Down Expand Up @@ -1085,6 +1090,7 @@ static int nii_start ( struct efi_device *efidev ) {
nii_pci_close ( nii );
err_pci_open:
err_hw_undi:
err_no_undi:
bs->CloseProtocol ( device, &efi_nii31_protocol_guid,
efi_image_handle, device );
err_open_protocol:
Expand Down

0 comments on commit feb3a0f

Please sign in to comment.