From 323b523c0f47221185378745fc9852593688db43 Mon Sep 17 00:00:00 2001 From: Jakub Czapiga Date: Thu, 27 Oct 2022 13:19:06 +0200 Subject: firmware: Die on zero size errors vb2api_get_firmware_size() BUG=none BRANCH=none TEST=make runtests -j8 Signed-off-by: Jakub Czapiga Disallow-Recycled-Builds: test-failures Change-Id: I9c22627410836906a84c387377facc778dd77f3b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3986523 Tested-by: Jakub Czapiga Reviewed-by: Julius Werner Commit-Queue: Jakub Czapiga Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/4005142 Reviewed-by: Reka Norman Commit-Queue: Reka Norman Tested-by: Kangheui Won Reviewed-by: Hung-Te Lin --- firmware/2lib/2misc.c | 6 +++++- tests/vb2_api_tests.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c index 66a31e83..c14aab55 100644 --- a/firmware/2lib/2misc.c +++ b/firmware/2lib/2misc.c @@ -43,10 +43,14 @@ uint32_t vb2api_get_firmware_size(struct vb2_context *ctx) { struct vb2_shared_data *sd = vb2_get_sd(ctx); if (!sd->preamble_size) - return 0; + VB2_DIE("Firmware preamble size is zero\n"); const struct vb2_fw_preamble *pre = (const struct vb2_fw_preamble *) vb2_member_of(sd, sd->preamble_offset); + + if (!pre->body_signature.data_size) + VB2_DIE("Firmware body data size in signature is zero\n"); + return pre->body_signature.data_size; } diff --git a/tests/vb2_api_tests.c b/tests/vb2_api_tests.c index 3ed8bd5f..2ff69e8d 100644 --- a/tests/vb2_api_tests.c +++ b/tests/vb2_api_tests.c @@ -288,7 +288,7 @@ static void misc_tests(void) reset_common_data(FOR_MISC); sd->preamble_size = 0; - TEST_EQ(vb2api_get_firmware_size(ctx), 0, "firmware_size too early"); + TEST_ABORT(vb2api_get_firmware_size(ctx), "firmware_size too early"); /* Test VB2_TRY() */ reset_common_data(FOR_MISC); -- cgit v1.2.1