firmware: Die on zero size errors vb2api_get_firmware_size()
BUG=none
BRANCH=none
TEST=make runtests -j8
Signed-off-by: Jakub Czapiga <jacz@semihalf.com>
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 <czapiga@google.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Commit-Queue: Jakub Czapiga <czapiga@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/4005142
Reviewed-by: Reka Norman <rekanorman@chromium.org>
Commit-Queue: Reka Norman <rekanorman@chromium.org>
Tested-by: Kangheui Won <khwon@chromium.org>
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c
index 66a31e8..c14aab5 100644
--- a/firmware/2lib/2misc.c
+++ b/firmware/2lib/2misc.c
@@ -43,10 +43,14 @@
{
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 3ed8bd5..2ff69e8 100644
--- a/tests/vb2_api_tests.c
+++ b/tests/vb2_api_tests.c
@@ -288,7 +288,7 @@
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);