svn commit: r325681 - head/sys/boot/efi/boot1
Ed Maste
emaste at FreeBSD.org
Fri Nov 10 21:26:45 UTC 2017
Author: emaste
Date: Fri Nov 10 21:26:44 2017
New Revision: 325681
URL: https://svnweb.freebsd.org/changeset/base/325681
Log:
boot1: avoid using NULL device path
As of r323063 boot1 printed out the path & device from which it was
loaded, but uboot's EFI implementation lacked some support, resulting in
a NULL pointer and a crash. Check for a NULL pointer and avoid
reporting (and storing in the environment) the device and path in this
case.
Submitted by: Zakary Nafziger <worldofzak at gmail.com>
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D13038
Modified:
head/sys/boot/efi/boot1/boot1.c
Modified: head/sys/boot/efi/boot1/boot1.c
==============================================================================
--- head/sys/boot/efi/boot1/boot1.c Fri Nov 10 20:30:10 2017 (r325680)
+++ head/sys/boot/efi/boot1/boot1.c Fri Nov 10 21:26:44 2017 (r325681)
@@ -460,22 +460,23 @@ efi_main(EFI_HANDLE Ximage, EFI_SYSTEM_TABLE *Xsystab)
imgpath = NULL;
if (status == EFI_SUCCESS) {
text = efi_devpath_name(img->FilePath);
- 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);
- printf(" Load Device: %S\n", text);
- efi_setenv_freebsd_wcs("Boot1Dev", text);
+ if (text != NULL) {
+ 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);
+ printf(" Load Device: %S\n", text);
+ efi_setenv_freebsd_wcs("Boot1Dev", text);
+ efi_free_devpath_name(text);
+ }
+ }
}
/* Get all the device handles */
More information about the svn-src-head
mailing list