[efi] Allow passing a NULL device path to path utility functions

Signed-off-by: Michael Brown <mcb30@ipxe.org>
pull/844/head
Michael Brown 2022-12-22 13:28:06 +00:00
parent d879c8e4d9
commit 0f3ace92c6
2 changed files with 5 additions and 5 deletions

View File

@ -425,7 +425,7 @@ static int efi_local_open_resolved ( struct efi_local *local,
static int efi_local_open_path ( struct efi_local *local, const char *path ) { static int efi_local_open_path ( struct efi_local *local, const char *path ) {
FILEPATH_DEVICE_PATH *fp = container_of ( efi_loaded_image->FilePath, FILEPATH_DEVICE_PATH *fp = container_of ( efi_loaded_image->FilePath,
FILEPATH_DEVICE_PATH, Header); FILEPATH_DEVICE_PATH, Header);
size_t fp_len = ( fp ? efi_path_len ( &fp->Header ) : 0 ); size_t fp_len = efi_path_len ( &fp->Header );
char base[ fp_len / 2 /* Cannot exceed this length */ ]; char base[ fp_len / 2 /* Cannot exceed this length */ ];
size_t remaining = sizeof ( base ); size_t remaining = sizeof ( base );
size_t len; size_t len;

View File

@ -43,12 +43,12 @@
/** /**
* Find end of device path * Find end of device path
* *
* @v path Path to device * @v path Device path, or NULL
* @ret path_end End of device path * @ret path_end End of device path, or NULL
*/ */
EFI_DEVICE_PATH_PROTOCOL * efi_path_end ( EFI_DEVICE_PATH_PROTOCOL *path ) { EFI_DEVICE_PATH_PROTOCOL * efi_path_end ( EFI_DEVICE_PATH_PROTOCOL *path ) {
while ( path->Type != END_DEVICE_PATH_TYPE ) { while ( path && ( path->Type != END_DEVICE_PATH_TYPE ) ) {
path = ( ( ( void * ) path ) + path = ( ( ( void * ) path ) +
/* There's this amazing new-fangled thing known as /* There's this amazing new-fangled thing known as
* a UINT16, but who wants to use one of those? */ * a UINT16, but who wants to use one of those? */
@ -61,7 +61,7 @@ EFI_DEVICE_PATH_PROTOCOL * efi_path_end ( EFI_DEVICE_PATH_PROTOCOL *path ) {
/** /**
* Find length of device path (excluding terminator) * Find length of device path (excluding terminator)
* *
* @v path Path to device * @v path Device path, or NULL
* @ret path_len Length of device path * @ret path_len Length of device path
*/ */
size_t efi_path_len ( EFI_DEVICE_PATH_PROTOCOL *path ) { size_t efi_path_len ( EFI_DEVICE_PATH_PROTOCOL *path ) {