From: Michael Tremer Date: Thu, 8 Jul 2021 12:57:45 +0000 (+0000) Subject: key: Do not try to access attributes without checking whether they exist X-Git-Tag: 0.9.28~1073 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2fe51cbdaf85d6205744abcba6e894f58c2055aa;p=pakfire.git key: Do not try to access attributes without checking whether they exist Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/key.c b/src/libpakfire/key.c index 3d4cb639a..20047f070 100644 --- a/src/libpakfire/key.c +++ b/src/libpakfire/key.c @@ -266,18 +266,30 @@ PAKFIRE_EXPORT const char* pakfire_key_get_fingerprint(struct pakfire_key* key) } PAKFIRE_EXPORT const char* pakfire_key_get_uid(struct pakfire_key* key) { - return key->gpgkey->uids->uid; + if (key->gpgkey->uids) + return key->gpgkey->uids->uid; + + return NULL; } PAKFIRE_EXPORT const char* pakfire_key_get_name(struct pakfire_key* key) { - return key->gpgkey->uids->name; + if (key->gpgkey->uids) + return key->gpgkey->uids->name; + + return NULL; } PAKFIRE_EXPORT const char* pakfire_key_get_email(struct pakfire_key* key) { - return key->gpgkey->uids->email; + if (key->gpgkey->uids) + return key->gpgkey->uids->email; + + return NULL; } PAKFIRE_EXPORT const char* pakfire_key_get_pubkey_algo(struct pakfire_key* key) { + if (!key->gpgkey->subkeys) + return NULL; + switch (key->gpgkey->subkeys->pubkey_algo) { case GPGME_PK_RSA: case GPGME_PK_RSA_E: @@ -308,19 +320,31 @@ PAKFIRE_EXPORT const char* pakfire_key_get_pubkey_algo(struct pakfire_key* key) } PAKFIRE_EXPORT size_t pakfire_key_get_pubkey_length(struct pakfire_key* key) { - return key->gpgkey->subkeys->length; + if (key->gpgkey->subkeys) + return key->gpgkey->subkeys->length; + + return 0; } PAKFIRE_EXPORT time_t pakfire_key_get_created(struct pakfire_key* key) { - return key->gpgkey->subkeys->timestamp; + if (key->gpgkey->subkeys) + return key->gpgkey->subkeys->timestamp; + + return 0; } PAKFIRE_EXPORT time_t pakfire_key_get_expires(struct pakfire_key* key) { - return key->gpgkey->subkeys->expires; + if (key->gpgkey->subkeys) + return key->gpgkey->subkeys->expires; + + return 0; } PAKFIRE_EXPORT int pakfire_key_is_revoked(struct pakfire_key* key) { - return key->gpgkey->subkeys->revoked; + if (key->gpgkey->subkeys) + return key->gpgkey->subkeys->revoked; + + return 0; } PAKFIRE_EXPORT int pakfire_key_generate(struct pakfire_key** key, Pakfire pakfire,