diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2014-06-21 17:36:57 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-06-23 21:48:04 +0000 |
commit | 5b63803f6cfd55edb8cafa598aed9b9ec9d5211c (patch) | |
tree | 394d57ab9737f617b53e330afb7456c8ce28a252 | |
parent | 539cbc27305b6aef9643adffc3297c7079fe7457 (diff) | |
download | vboot-5b63803f6cfd55edb8cafa598aed9b9ec9d5211c.tar.gz |
vboot2: Check necessity of recovery when firmware body hash fails to match
TEST=Booted Nyan Blaze and verified recovery is requested.
BUG=None
BRANCH=none
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Change-Id: I076e9714de4b853973cadad9a02a35d28431790c
Reviewed-on: https://chromium-review.googlesource.com/205156
Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r-- | firmware/2lib/2api.c | 3 | ||||
-rw-r--r-- | firmware/2lib/2misc.c | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/firmware/2lib/2api.c b/firmware/2lib/2api.c index 0138669d..e1a06230 100644 --- a/firmware/2lib/2api.c +++ b/firmware/2lib/2api.c @@ -291,5 +291,8 @@ int vb2api_check_hash(struct vb2_context *ctx) vb2_signature_data(&pre->body_signature), digest, &wb); + if (rv) + vb2_fail(ctx, VB2_RECOVERY_RO_INVALID_RW, rv); + return rv; } diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c index 685cf07d..f5571dc6 100644 --- a/firmware/2lib/2misc.c +++ b/firmware/2lib/2misc.c @@ -95,6 +95,7 @@ void vb2_fail(struct vb2_context *ctx, uint8_t reason, uint8_t subcode) * If recovery is already requested, it's a more specific error code * than later code is providing and we shouldn't overwrite it. */ + VB2_DEBUG("Both slots are bad. Need recovery\n"); if (!vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST)) { vb2_nv_set(ctx, VB2_NV_RECOVERY_REQUEST, reason); vb2_nv_set(ctx, VB2_NV_RECOVERY_SUBCODE, subcode); |