From e05fd5e060cf5a4a71d5d8a65db7b39876d67726 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 24 Jun 2014 09:38:19 +0200 Subject: libalpm: check for valid public key algorithm --- lib/libalpm/signing.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/libalpm') diff --git a/lib/libalpm/signing.c b/lib/libalpm/signing.c index c6b748e3..e46fa2ea 100644 --- a/lib/libalpm/signing.c +++ b/lib/libalpm/signing.c @@ -327,6 +327,10 @@ static int key_search(alpm_handle_t *handle, const char *fpr, pgpkey->length = key->subkeys->length; pgpkey->revoked = key->subkeys->revoked; + /* Initialize with '?', this is overwritten unless public key + * algorithm is unknown. */ + pgpkey->pubkey_algo = '?'; + switch(key->subkeys->pubkey_algo) { case GPGME_PK_RSA: case GPGME_PK_RSA_E: @@ -352,6 +356,14 @@ static int key_search(alpm_handle_t *handle, const char *fpr, ret = 1; + /* We do not want to add a default switch case above to receive + * compiler error on new public key algorithm in gpgme. So check + * here if we have a valid pubkey_algo. */ + if (pgpkey->pubkey_algo == '?') { + _alpm_log(handle, ALPM_LOG_DEBUG, + "unknown public key algorithm: %d\n", key->subkeys->pubkey_algo); + } + gpg_error: if(ret != 1) { _alpm_log(handle, ALPM_LOG_DEBUG, "gpg error: %s\n", gpgme_strerror(gpg_err)); -- cgit v1.2.3-70-g09d2