]> git.ipfire.org Git - people/stevee/pakfire.git/commitdiff
key: Do not try to access attributes without checking whether they exist
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 8 Jul 2021 12:57:45 +0000 (12:57 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 8 Jul 2021 12:57:45 +0000 (12:57 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/key.c

index 3d4cb639ab400af52d4fd8d06389c7fd724534a8..20047f070a33050987fc3a973e573bbfdf7bcdad 100644 (file)
@@ -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,