diff options
-rw-r--r-- | lib/privkey.c | 6 | ||||
-rw-r--r-- | lib/pubkey.c | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/lib/privkey.c b/lib/privkey.c index 4114e2ca18..9f02c5b062 100644 --- a/lib/privkey.c +++ b/lib/privkey.c @@ -1879,15 +1879,17 @@ int gnutls_privkey_verify_params(gnutls_privkey_t key) int gnutls_privkey_get_spki(gnutls_privkey_t privkey, gnutls_x509_spki_t spki, unsigned int flags) { + gnutls_x509_spki_t p = &privkey->key.x509->params.spki; + if (privkey == NULL || privkey->type != GNUTLS_PRIVKEY_X509) { gnutls_assert(); return GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE; } - if (privkey->key.x509->params.spki.pk == GNUTLS_PK_UNKNOWN) + if (p->pk == GNUTLS_PK_UNKNOWN) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - memcpy(spki, &privkey->key.x509->params.spki, sizeof(gnutls_x509_spki_st)); + memcpy(spki, p, sizeof(gnutls_x509_spki_st)); return 0; } diff --git a/lib/pubkey.c b/lib/pubkey.c index 6f9d54f119..e03aea709e 100644 --- a/lib/pubkey.c +++ b/lib/pubkey.c @@ -2581,15 +2581,17 @@ int gnutls_pubkey_verify_params(gnutls_pubkey_t key) int gnutls_pubkey_get_spki(gnutls_pubkey_t pubkey, gnutls_x509_spki_t spki, unsigned int flags) { + gnutls_x509_spki_t p = &pubkey->params.spki; + if (pubkey == NULL) { gnutls_assert(); return GNUTLS_E_INVALID_REQUEST; } - if (pubkey->params.spki.pk == GNUTLS_PK_UNKNOWN) + if (p->pk == GNUTLS_PK_UNKNOWN) return gnutls_assert_val(GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE); - memcpy(spki, &pubkey->params.spki, sizeof(gnutls_x509_spki_st)); + memcpy(spki, p, sizeof(gnutls_x509_spki_st)); return 0; } |