efi_loader: correctly split device path of loaded image
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sat, 20 Apr 2019 19:24:43 +0000 (19:24 +0000)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Mon, 22 Apr 2019 22:37:28 +0000 (00:37 +0200)
When the LoadImage() service is called for an image that is already loaded
to memory the file path may be NULL or it will contain both a device path
as well as a media path. We should not assume that there is no media path.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_loader/efi_boottime.c

index abc295e392e93338122578a8cdda61290605755e..72897dc2c84105efedd6fa6c9b6a006eefc17106 100644 (file)
@@ -1699,19 +1699,11 @@ efi_status_t EFIAPI efi_load_image(bool boot_policy,
                                               &source_size);
                if (ret != EFI_SUCCESS)
                        goto error;
-               /*
-                * split file_path which contains both the device and
-                * file parts:
-                */
-               efi_dp_split_file_path(file_path, &dp, &fp);
        } else {
-               /* In this case, file_path is the "device" path, i.e.
-                * something like a HARDWARE_DEVICE:MEMORY_MAPPED
-                */
                dest_buffer = source_buffer;
-               dp = file_path;
-               fp = NULL;
        }
+       /* split file_path which contains both the device and file parts */
+       efi_dp_split_file_path(file_path, &dp, &fp);
        ret = efi_setup_loaded_image(dp, fp, image_obj, &info);
        if (ret == EFI_SUCCESS)
                ret = efi_load_pe(*image_obj, dest_buffer, info);