summaryrefslogtreecommitdiff
path: root/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot/corstone1000/0016-efi_loader-fix-null-pointer-exception-with-get_image.patch
blob: 655e014224750924bf6effc157e049305fd3d13f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
From 13bf700129e902ba7ae556babcfb9c7956f32571 Mon Sep 17 00:00:00 2001
From: Vishnu Banavath <vishnu.banavath@arm.com>
Date: Fri, 14 Jan 2022 15:24:18 +0000
Subject: [PATCH 16/38] efi_loader: fix null pointer exception with
 get_image_info

get_img_info API implemented for corstone1000 target does not
check the input attributes and as a result uboot crash's with
null pointer access. This change is to fix the null pointer
exception.

Signed-off-by: Vishnu Banavath <vishnu.banavath@arm.com>
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Upstream-Status: Pending [Not submitted to upstream yet]
---
 lib/efi_loader/efi_firmware.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/lib/efi_loader/efi_firmware.c b/lib/efi_loader/efi_firmware.c
index 0a38a96351..c883e2ff0a 100644
--- a/lib/efi_loader/efi_firmware.c
+++ b/lib/efi_loader/efi_firmware.c
@@ -39,26 +39,29 @@ static efi_status_t efi_corstone1000_img_info_get (
 	int i = 0;
 
 	*image_info_size = sizeof(*image_info);
-	*descriptor_version = EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION;
-	*descriptor_count = 1;//dfu_num;
-	*descriptor_size = sizeof(*image_info);
+	if(descriptor_version)
+	    *descriptor_version = EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION;
+	if(descriptor_count)
+	    *descriptor_count = 1;
+	if(descriptor_size)
+	    *descriptor_size = sizeof(*image_info);
 	if (package_version)
 		*package_version = 0xffffffff; /* not supported */
 	if(package_version_name)
 		*package_version_name = NULL; /* not supported */
 
 	if(image_info == NULL) {
-		log_warning("image_info is null\n");
+		log_debug("image_info is null\n");
 		return EFI_BUFFER_TOO_SMALL;
 	}
 
-	image_info[i].image_index = i;
+	image_info[i].image_index = 1;
 	image_info[i].image_type_id = *image_type;
 	image_info[i].image_id = 0;
-	image_info[i].image_id_name = "wic";
-	image_info[i].version = 1;
+	image_info[i].image_id_name = L"wic image";
+	image_info[i].version = 0;
 	image_info[i].version_name = NULL;
-	image_info[i].size = 0x1000;
+	image_info[i].size = 0;
 	image_info[i].attributes_supported = IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
 					     IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED;
 	image_info[i].attributes_setting = IMAGE_ATTRIBUTE_IMAGE_UPDATABLE;
-- 
2.25.1