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);