summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@gnu.org>2020-09-08 19:55:14 +0200
committerDaiki Ueno <ueno@gnu.org>2020-09-18 10:12:24 +0200
commit6750b147fefd6c6824669613c0051cff218d6e3c (patch)
tree8fa7bf27815490c9e0a67125eef48f7166f90563
parent887ee6ab7aef1187d23c440f464e40d6bb09e088 (diff)
downloadgnutls-6750b147fefd6c6824669613c0051cff218d6e3c.tar.gz
spki: work around GCC 10 -Warray-bounds false-positive
Suggested by Martin Sebor in: https://bugzilla.redhat.com/show_bug.cgi?id=1876801#c1 Signed-off-by: Daiki Ueno <ueno@gnu.org>
-rw-r--r--lib/privkey.c6
-rw-r--r--lib/pubkey.c6
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;
}