summaryrefslogtreecommitdiff
path: root/futility/vb2_helper.c
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2016-09-02 12:21:55 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-09-06 22:02:16 -0700
commit0efc4f3ee111d28cf22060a22ad591427dc7eb7f (patch)
tree57d1af3c399effad787e63ac8bdbbdcf4b780a1d /futility/vb2_helper.c
parent470b24816681dc1781e1b280980d9448d2c1af96 (diff)
downloadvboot-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.c14
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");