diff options
author | Randall Spangler <rspangler@chromium.org> | 2016-09-02 12:21:55 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-09-06 22:02:16 -0700 |
commit | 0efc4f3ee111d28cf22060a22ad591427dc7eb7f (patch) | |
tree | 57d1af3c399effad787e63ac8bdbbdcf4b780a1d /futility/vb2_helper.c | |
parent | 470b24816681dc1781e1b280980d9448d2c1af96 (diff) | |
download | vboot-0efc4f3ee111d28cf22060a22ad591427dc7eb7f.tar.gz |
futility: Fix lookup of invalid algorithm names
If given a malformed file with an invalid algorithm, futility could
dereference null when looking up the algorithm names.
BUG=chromium:643769
BRANCH=none
TEST=make runtests
Change-Id: I26d1312b8bf2eec8d806664708676daa9f36fa58
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/380522
Reviewed-by: Stefan Reinauer <reinauer@chromium.org>
Diffstat (limited to 'futility/vb2_helper.c')
-rw-r--r-- | futility/vb2_helper.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/futility/vb2_helper.c b/futility/vb2_helper.c index d953f2f5..6f36af78 100644 --- a/futility/vb2_helper.c +++ b/futility/vb2_helper.c @@ -93,7 +93,6 @@ int ft_show_vb21_pubkey(const char *name, uint8_t *buf, uint32_t len, void *data) { struct vb2_public_key key; - const struct vb2_text_vs_enum *entry; uint8_t sha1sum[VB2_SHA1_DIGEST_SIZE]; /* The key's members will point into the state buffer after this. Don't @@ -104,12 +103,10 @@ int ft_show_vb21_pubkey(const char *name, uint8_t *buf, uint32_t len, printf("Public Key file: %s\n", name); printf(" Vboot API: 2.1\n"); printf(" Desc: \"%s\"\n", key.desc); - entry = vb2_lookup_by_num(vb2_text_vs_sig, key.sig_alg); printf(" Signature Algorithm: %d %s\n", key.sig_alg, - entry ? entry->name : "(invalid)"); - entry = vb2_lookup_by_num(vb2_text_vs_hash, key.hash_alg); + vb2_get_sig_algorithm_name(key.sig_alg)); printf(" Hash Algorithm: %d %s\n", key.hash_alg, - entry ? entry->name : "(invalid)"); + vb2_get_hash_algorithm_name(key.hash_alg)); printf(" Version: 0x%08x\n", key.version); printf(" ID: "); vb2_print_bytes(key.id, sizeof(*key.id)); @@ -142,7 +139,6 @@ int ft_show_vb21_privkey(const char *name, uint8_t *buf, uint32_t len, void *data) { struct vb2_private_key *key = 0; - const struct vb2_text_vs_enum *entry; uint8_t sha1sum[VB2_SHA1_DIGEST_SIZE]; if (VB2_SUCCESS != vb21_private_key_unpack(&key, buf, len)) @@ -151,12 +147,10 @@ int ft_show_vb21_privkey(const char *name, uint8_t *buf, uint32_t len, printf("Private key file: %s\n", name); printf(" Vboot API: 2.1\n"); printf(" Desc: \"%s\"\n", key->desc ? key->desc : ""); - entry = vb2_lookup_by_num(vb2_text_vs_sig, key->sig_alg); printf(" Signature Algorithm: %d %s\n", key->sig_alg, - entry ? entry->name : "(invalid)"); - entry = vb2_lookup_by_num(vb2_text_vs_hash, key->hash_alg); + vb2_get_sig_algorithm_name(key->sig_alg)); printf(" Hash Algorithm: %d %s\n", key->hash_alg, - entry ? entry->name : "(invalid)"); + vb2_get_hash_algorithm_name(key->hash_alg)); printf(" ID: "); vb2_print_bytes(&key->id, sizeof(key->id)); printf("\n"); |