Pull request for efi-2021-07-rc1-2

Documentation:
 	man-page for fatinfo
 
 Bug fixes:
 	memory leak in efi_capsule_scan_dir()
 	incorrect invocations of EFI_CALL macro creating ESRT table
 	buffer overflow in tcg2_create_digest()
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEEbcT5xx8ppvoGt20zxIHbvCwFGsQFAmB7I6wACgkQxIHbvCwF
 GsRy5g//Sa0KDiCD9MxhoUaBtBN5YH3/PhGObIu3MGM4py1Kr4tLHHrqA3ThFmQn
 ICT4wgKF3sZNia/o8/sptKP9c0aEzOBNm5m5hoJ/EwkQlXNu8uZy/HHMjznBH/mi
 xk0SX2LFA1z+5KX6SS8CJY6RpE0h1o4nexEx+z1p161n4cxldSWtMzX9rf51xUvJ
 dNCfMKlXwfYD0dI7S9zanncF0QjhpdfuLh46HPYlSNNFt0wbzRvOoShmT0nxYj2L
 nzOugHDLOmWfTZXi+8xLC7iK6TVKRoandLpzw9c79PtUoFP+E6AE1Y7Mf8VtLLSu
 LZfFj9LiqbngPJD0bB1cQICZPjHVEVxnVVK6jTRXcZ3Nu/7vi1acnVFWu4bca5Ms
 R1IQl1n75zPtuVIER6PVgMnn+5auAQzAVSlA1EOmhAmV6VbU1HXSikTlvqyfwIiU
 9nuPxm4DW7f+6hVw3bbVbxnFhxy038CtRek5ccbUdqdB2thBwDlzq+U29E/mDKkS
 t0qPfBzhea6E29VdKKwUJlMZE4CnCKBAdoaq11lPPeY0s2iRpx2ga5J0TvsX9gUb
 1KeAAv5AZ+9mOvA7KyZXMGe25HF63MUdJV42EpkCwLhMW1innyKI5hRVnUkokZ/u
 EPjJDOtpymM7LDdC9HFjzVWnQDq6sWiusn+V3nld7stco8Ipzl8=
 =d9Ks
 -----END PGP SIGNATURE-----

Merge tag 'efi-2021-07-rc1-2' of https://source.denx.de/u-boot/custodians/u-boot-efi

Pull request for efi-2021-07-rc1-2

Documentation:
	man-page for fatinfo

Bug fixes:
	memory leak in efi_capsule_scan_dir()
	incorrect invocations of EFI_CALL macro creating ESRT table
	buffer overflow in tcg2_create_digest()
This commit is contained in:
Tom Rini 2021-04-18 08:47:27 -04:00
commit 3a9aaefcaa
7 changed files with 24 additions and 20 deletions

View File

@ -1,7 +1,7 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
Apalis iMX8X V1.1A Module (SoC NXP i.MX8QXP RevB) Apalis iMX8X V1.1A Module (SoC NXP i.MX8QXP RevB)
========================== =================================================
Quick Start Quick Start
----------- -----------

View File

@ -45,7 +45,7 @@ Here is some material relevant to Chromium OS verified boot with U-Boot:
- Presented at Open Source Firmware Conference 2018, Erlangen - Presented at Open Source Firmware Conference 2018, Erlangen
- Describes the work in progress as at the end of 2018 - Describes the work in progress as at the end of 2018
- Slides at `OSFC <https://2018.osfc.io/uploads/talk/paper/26/U-Boot_with_Chrome_OS_and_firmware_packaging.pdf>`_ - Slides at `OSFC <https://2018.osfc.io/uploads/talk/paper/26/U-Boot_with_Chrome_OS_and_firmware_packaging.pdf>`_
- Video on `Youtube <https://www.youtube.com/watch?v=1jknxUvmwpo>`_ - `Youtube video 'OSFC - U-Boot with Chrome OS and firmware packaging' <https://www.youtube.com/watch?v=1jknxUvmwpo>`_
- "Verified Boot in Chrome OS and how to make it work for you" - "Verified Boot in Chrome OS and how to make it work for you"
@ -58,7 +58,7 @@ Here is some material relevant to Chromium OS verified boot with U-Boot:
and pit/pi (`Samsung Chromebook 2 <https://www.cnet.com/products/samsung-chromebook-2-xe503c12-11-6-exynos-5-octa-4-gb-ram-16-gb-ssd/>`_ and pit/pi (`Samsung Chromebook 2 <https://www.cnet.com/products/samsung-chromebook-2-xe503c12-11-6-exynos-5-octa-4-gb-ram-16-gb-ssd/>`_
with Exynos 5 Octa 5420 in 2014). with Exynos 5 Octa 5420 in 2014).
- Slides at `Google research <https://research.google/pubs/pub42038/>`_ - Slides at `Google research <https://research.google/pubs/pub42038/>`_
- Video at `Youtube <https://www.youtube.com/watch?v=kdpZC9jFzZA>`_ - `Youtube video 'Verified Boot on Chrome OS and How to do it yourself' <https://www.youtube.com/watch?v=kdpZC9jFzZA>`_
- "Chrome University 2018: Chrome OS Firmware and Verified Boot 201" - "Chrome University 2018: Chrome OS Firmware and Verified Boot 201"
@ -67,7 +67,7 @@ Here is some material relevant to Chromium OS verified boot with U-Boot:
topics. This has no U-Boot information, but does cover coreboot and also topics. This has no U-Boot information, but does cover coreboot and also
talks about the Chrome OS EC and Security chip. This is probably the talks about the Chrome OS EC and Security chip. This is probably the
best introduction talk. best introduction talk.
- Video at `YouTube <https://www.youtube.com/watch?v=WY2sWpuda2g>`_ - `Youtube video 'Chrome University 2018: Chrome OS Firmware and Verified Boot 201' <https://www.youtube.com/watch?v=WY2sWpuda2g>`_
- `Chromium OS U-Boot <https://www.chromium.org/developers/u-boot>`_ - `Chromium OS U-Boot <https://www.chromium.org/developers/u-boot>`_

View File

@ -88,7 +88,7 @@ SIT format
SIT is a 20 byte long structure containing of 5 32-bit words. Those encode SIT is a 20 byte long structure containing of 5 32-bit words. Those encode
bootloader B-copy area offset (called "firstSectorNumber"), magic value bootloader B-copy area offset (called "firstSectorNumber"), magic value
(called "tag") that is always 0x00112233, and three unused words set to 0. (called "tag") that is always 0x00112233, and three unused words set to 0.
SIT is documented in [1] and [2]. Example SIT are below:: SIT is documented in [1]_ and [2]_. Example SIT are below::
$ hexdump -vC sit-mx7d.bin $ hexdump -vC sit-mx7d.bin
00000000 00 00 00 00 00000000 00 00 00 00

View File

@ -28,6 +28,7 @@ Shell commands
exception exception
exit exit
false false
fatinfo
for for
load load
loady loady

View File

@ -756,8 +756,11 @@ static efi_status_t efi_capsule_scan_dir(u16 ***files, unsigned int *num)
tmp_size = dirent_size; tmp_size = dirent_size;
ret = EFI_CALL((*dirh->read)(dirh, &tmp_size, dirent)); ret = EFI_CALL((*dirh->read)(dirh, &tmp_size, dirent));
if (ret == EFI_BUFFER_TOO_SMALL) { if (ret == EFI_BUFFER_TOO_SMALL) {
struct efi_file_info *old_dirent = dirent;
dirent = realloc(dirent, tmp_size); dirent = realloc(dirent, tmp_size);
if (!dirent) { if (!dirent) {
dirent = old_dirent;
ret = EFI_OUT_OF_RESOURCES; ret = EFI_OUT_OF_RESOURCES;
goto err; goto err;
} }

View File

@ -139,7 +139,7 @@ efi_status_t efi_esrt_allocate_install(u32 num_entries)
/* If there was a previous ESRT, deallocate its memory now. */ /* If there was a previous ESRT, deallocate its memory now. */
if (esrt) if (esrt)
ret = EFI_CALL(efi_free_pool(esrt)); ret = efi_free_pool(esrt);
esrt = new_esrt; esrt = new_esrt;
@ -253,8 +253,8 @@ efi_status_t efi_esrt_add_from_fmp(struct efi_firmware_management_protocol *fmp)
return EFI_INVALID_PARAMETER; return EFI_INVALID_PARAMETER;
} }
ret = EFI_CALL(efi_allocate_pool(EFI_BOOT_SERVICES_DATA, info_size, ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA, info_size,
(void **)&img_info)); (void **)&img_info);
if (ret != EFI_SUCCESS) { if (ret != EFI_SUCCESS) {
EFI_PRINT("ESRT failed to allocate memory for image info.\n"); EFI_PRINT("ESRT failed to allocate memory for image info.\n");
return ret; return ret;
@ -298,7 +298,7 @@ efi_status_t efi_esrt_add_from_fmp(struct efi_firmware_management_protocol *fmp)
} }
out: out:
EFI_CALL(efi_free_pool(img_info)); efi_free_pool(img_info);
return EFI_SUCCESS; return EFI_SUCCESS;
} }
@ -384,8 +384,8 @@ efi_status_t efi_esrt_populate(void)
goto out; goto out;
} }
ret = EFI_CALL(efi_allocate_pool(EFI_BOOT_SERVICES_DATA, info_size, ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA, info_size,
(void **)&img_info)); (void **)&img_info);
if (ret != EFI_SUCCESS) { if (ret != EFI_SUCCESS) {
EFI_PRINT("ESRT failed to allocate memory for image info\n"); EFI_PRINT("ESRT failed to allocate memory for image info\n");
goto out; goto out;
@ -405,13 +405,13 @@ efi_status_t efi_esrt_populate(void)
if (ret != EFI_SUCCESS) { if (ret != EFI_SUCCESS) {
EFI_PRINT("ESRT failed to obtain image info from FMP\n"); EFI_PRINT("ESRT failed to obtain image info from FMP\n");
EFI_CALL(efi_free_pool(img_info)); efi_free_pool(img_info);
goto out; goto out;
} }
num_entries += desc_count; num_entries += desc_count;
EFI_CALL(efi_free_pool(img_info)); efi_free_pool(img_info);
} }
EFI_PRINT("ESRT create table with %u entries\n", num_entries); EFI_PRINT("ESRT create table with %u entries\n", num_entries);
@ -430,9 +430,9 @@ efi_status_t efi_esrt_populate(void)
*/ */
it_handle = base_handle; it_handle = base_handle;
for (u32 idx = 0; idx < no_handles; idx++, it_handle++) { for (u32 idx = 0; idx < no_handles; idx++, it_handle++) {
ret = EFI_CALL(efi_search_protocol(*it_handle, ret = efi_search_protocol(*it_handle,
&efi_guid_firmware_management_protocol, &efi_guid_firmware_management_protocol,
&handler)); &handler);
if (ret != EFI_SUCCESS) { if (ret != EFI_SUCCESS) {
EFI_PRINT("ESRT unable to find FMP handle (%u)\n", EFI_PRINT("ESRT unable to find FMP handle (%u)\n",
@ -448,7 +448,7 @@ efi_status_t efi_esrt_populate(void)
out: out:
EFI_CALL(efi_free_pool(base_handle)); efi_free_pool(base_handle);
return ret; return ret;
} }
@ -490,8 +490,8 @@ efi_status_t efi_esrt_register(void)
return ret; return ret;
} }
ret = EFI_CALL(efi_create_event(EVT_NOTIFY_SIGNAL, TPL_CALLBACK, ret = efi_create_event(EVT_NOTIFY_SIGNAL, TPL_CALLBACK,
efi_esrt_new_fmp_notify, NULL, NULL, &ev)); efi_esrt_new_fmp_notify, NULL, NULL, &ev);
if (ret != EFI_SUCCESS) { if (ret != EFI_SUCCESS) {
EFI_PRINT("ESRT failed to create event\n"); EFI_PRINT("ESRT failed to create event\n");
return ret; return ret;

View File

@ -515,7 +515,7 @@ static efi_status_t tcg2_create_digest(const u8 *input, u32 length,
sha1_context ctx; sha1_context ctx;
sha256_context ctx_256; sha256_context ctx_256;
sha512_context ctx_512; sha512_context ctx_512;
u8 final[TPM2_ALG_SHA512]; u8 final[TPM2_SHA512_DIGEST_SIZE];
efi_status_t ret; efi_status_t ret;
u32 active; u32 active;
int i; int i;