diff mbox series

[v4,03/12] efi_loader: signature: fix a size check against revocation list

Message ID 20200711072634.290165-4-xypron.glpk@gmx.de
State Accepted
Commit 36b2f9da5ccd38581c80098b0cad6dd1a9224705
Headers show
Series efi_loader: rework/improve UEFI secure boot code | expand

Commit Message

Heinrich Schuchardt July 11, 2020, 7:26 a.m. UTC
From: AKASHI Takahiro <takahiro.akashi at linaro.org>

Since the size check against an entry in efi_search_siglist() is
incorrect, this function will never find out a to-be-matched certificate
and its associated revocation time in the signature list.

Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
---
 lib/efi_loader/efi_signature.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

--
2.27.0
diff mbox series

Patch

diff --git a/lib/efi_loader/efi_signature.c b/lib/efi_loader/efi_signature.c
index e05c471c61..cd2df46264 100644
--- a/lib/efi_loader/efi_signature.c
+++ b/lib/efi_loader/efi_signature.c
@@ -433,10 +433,11 @@  static bool efi_search_siglist(struct x509_certificate *cert,
 		 *	time64_t revocation_time;
 		 * };
 		 */
-		if ((sig_data->size == SHA256_SUM_LEN) &&
-		    !memcmp(sig_data->data, hash, SHA256_SUM_LEN)) {
+		if ((sig_data->size >= SHA256_SUM_LEN + sizeof(time64_t)) &&
+		    !memcmp(sig_data->data, msg, SHA256_SUM_LEN)) {
 			memcpy(revoc_time, sig_data->data + SHA256_SUM_LEN,
 			       sizeof(*revoc_time));
+			EFI_PRINT("revocation time: 0x%llx\n", *revoc_time);
 			found = true;
 			goto out;
 		}