diff options
author | Randall Spangler <rspangler@chromium.org> | 2014-10-22 15:21:32 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-10-23 03:32:57 +0000 |
commit | b035e370a7ca315d1e4d249274893ef11bcac700 (patch) | |
tree | 30f89ba4ea429f9638e78027f380268d51d9c874 | |
parent | 9504754fee346569b4cdcaae9f54fa65cf3005d9 (diff) | |
download | vboot-b035e370a7ca315d1e4d249274893ef11bcac700.tar.gz |
vboot2: Fix broken compatiblity check for gbb header 1.1
vboot2 supports only GBB header versions 1.1+. When the GBB header
was rev'd to 1.2, this broke the compatibility check for 1.1.
However, the test was written in such a way that wasn't detected. Fix
the check and the test.
BUG=chromium:415227
BRANCH=none
TEST=VBOOT2=1 make runtests
Change-Id: Ifeb1f21bf5cf3cc05d31ac7912693e090eb8fd5e
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/225110
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
-rw-r--r-- | firmware/2lib/2misc.c | 2 | ||||
-rw-r--r-- | tests/vb2_misc_tests.c | 15 |
2 files changed, 10 insertions, 7 deletions
diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c index bcf5b362..a0ae60e0 100644 --- a/firmware/2lib/2misc.c +++ b/firmware/2lib/2misc.c @@ -50,7 +50,7 @@ int vb2_read_gbb_header(struct vb2_context *ctx, struct vb2_gbb_header *gbb) return VB2_ERROR_GBB_VERSION; /* Current code is not backwards-compatible to 1.0 headers */ - if (gbb->minor_version < VB2_GBB_MINOR_VER) + if (gbb->minor_version == 0) return VB2_ERROR_GBB_TOO_OLD; /* diff --git a/tests/vb2_misc_tests.c b/tests/vb2_misc_tests.c index 8c3fc333..c93cbefc 100644 --- a/tests/vb2_misc_tests.c +++ b/tests/vb2_misc_tests.c @@ -157,18 +157,21 @@ static void gbb_tests(void) VB2_ERROR_GBB_MAGIC, "read gbb header bad magic"); gbb.signature[0]--; - gbb.major_version++; + gbb.major_version = VB2_GBB_MAJOR_VER + 1; TEST_EQ(vb2_read_gbb_header(&cc, &gbbdest), VB2_ERROR_GBB_VERSION, "read gbb header major version"); - gbb.major_version--; + gbb.major_version = VB2_GBB_MAJOR_VER; - gbb.minor_version++; + gbb.minor_version = VB2_GBB_MINOR_VER + 1; TEST_SUCC(vb2_read_gbb_header(&cc, &gbbdest), "read gbb header minor++"); - gbb.minor_version -= 2; + gbb.minor_version = 1; + TEST_SUCC(vb2_read_gbb_header(&cc, &gbbdest), + "read gbb header 1.1"); + gbb.minor_version = 0; TEST_EQ(vb2_read_gbb_header(&cc, &gbbdest), - VB2_ERROR_GBB_TOO_OLD, "read gbb header minor version old"); - gbb.minor_version++; + VB2_ERROR_GBB_TOO_OLD, "read gbb header 1.0 fails"); + gbb.minor_version = VB2_GBB_MINOR_VER; gbb.header_size--; TEST_EQ(vb2_read_gbb_header(&cc, &gbbdest), |