aboutsummaryrefslogtreecommitdiffstats
path: root/common/dns-cert.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--common/dns-cert.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/common/dns-cert.c b/common/dns-cert.c
index e7be2759b..405ca293e 100644
--- a/common/dns-cert.c
+++ b/common/dns-cert.c
@@ -70,7 +70,7 @@
returns the first CERT found with a supported type; it is expected
that only one CERT record is used. If WANT_CERTTYPE is one of the
supported certtypes only records wih this certtype are considered
- and the first found is returned. */
+ and the first found is returned. R_KEY is optional. */
gpg_error_t
get_dns_cert (const char *name, int want_certtype,
estream_t *r_key,
@@ -84,7 +84,8 @@ get_dns_cert (const char *name, int want_certtype,
unsigned int ctype;
int count;
- *r_key = NULL;
+ if (r_key)
+ *r_key = NULL;
*r_fpr = NULL;
*r_fprlen = 0;
*r_url = NULL;
@@ -129,7 +130,7 @@ get_dns_cert (const char *name, int want_certtype,
if (want_certtype && want_certtype != ctype)
; /* Not of the requested certtype. */
- else if (ctype == DNS_CERTTYPE_PGP && datalen >= 11)
+ else if (ctype == DNS_CERTTYPE_PGP && datalen >= 11 && r_key)
{
/* CERT type is PGP. Gpg checks for a minimum length of 11,
thus we do the same. */
@@ -197,7 +198,8 @@ get_dns_cert (const char *name, int want_certtype,
int r;
u16 count;
- *r_key = NULL;
+ if (r_key)
+ *r_key = NULL;
*r_fpr = NULL;
*r_fprlen = 0;
*r_url = NULL;
@@ -292,7 +294,7 @@ get_dns_cert (const char *name, int want_certtype,
/* 15 bytes takes us to here */
if (want_certtype && want_certtype != ctype)
; /* Not of the requested certtype. */
- else if (ctype == DNS_CERTTYPE_PGP && dlen)
+ else if (ctype == DNS_CERTTYPE_PGP && dlen && r_key)
{
/* PGP type */
*r_key = es_fopenmem_init (0, "rwb", pt, dlen);
@@ -355,7 +357,8 @@ get_dns_cert (const char *name, int want_certtype,
#endif /*!USE_ADNS */
#else /* !USE_DNS_CERT */
(void)name;
- *r_key = NULL;
+ if (r_key)
+ *r_key = NULL;
*r_fpr = NULL;
*r_fprlen = 0;
*r_url = NULL;