boot1: also check for NULL device

r325681 fixed a NULL pointer dereference on RPi3 caused by a lack of
functionality in uboot's EFI implementation.  That rev checked the boot1
load path for NULL but not the load device.  In practice if the former
works the latter will as well, but improve correctness by checking each
separately.

Submitted by:	Keith White <kwhite@eecs.uottawa.ca>
Reported by:	jhb
MFC after:	5 days
MFC with:	r325681
Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Ed Maste 2017-11-12 17:15:54 +00:00
parent 175748c982
commit 1ec7755286
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=325744

View File

@ -464,14 +464,16 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
printf(" Load Path: %S\n", text);
efi_setenv_freebsd_wcs("Boot1Path", text);
efi_free_devpath_name(text);
}
status = BS->HandleProtocol(img->DeviceHandle,
&DevicePathGUID, (void **)&imgpath);
if (status != EFI_SUCCESS) {
DPRINTF("Failed to get image DevicePath (%lu)\n",
EFI_ERROR_CODE(status));
} else {
text = efi_devpath_name(imgpath);
status = BS->HandleProtocol(img->DeviceHandle, &DevicePathGUID,
(void **)&imgpath);
if (status != EFI_SUCCESS) {
DPRINTF("Failed to get image DevicePath (%lu)\n",
EFI_ERROR_CODE(status));
} else {
text = efi_devpath_name(imgpath);
if (text != NULL) {
printf(" Load Device: %S\n", text);
efi_setenv_freebsd_wcs("Boot1Dev", text);
efi_free_devpath_name(text);