x509: Manually print CRL/OCSP URIs when fuzzing
This avoids a warning about the custom %Y printf specifier.
This commit is contained in:
@@ -1732,6 +1732,9 @@ fi
|
|||||||
if test x$ikev2 = xtrue; then
|
if test x$ikev2 = xtrue; then
|
||||||
AC_DEFINE([USE_IKEV2], [], [support for IKEv2 protocol])
|
AC_DEFINE([USE_IKEV2], [], [support for IKEv2 protocol])
|
||||||
fi
|
fi
|
||||||
|
if test x$fuzzing = xtrue; then
|
||||||
|
AC_DEFINE([USE_FUZZING], [], [build code for fuzzing])
|
||||||
|
fi
|
||||||
|
|
||||||
# ====================================================
|
# ====================================================
|
||||||
# options for enabled modules (see conf/Makefile.am)
|
# options for enabled modules (see conf/Makefile.am)
|
||||||
|
|||||||
@@ -217,6 +217,29 @@ struct private_x509_cert_t {
|
|||||||
refcount_t ref;
|
refcount_t ref;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a generalName to a string
|
||||||
|
*/
|
||||||
|
static bool gn_to_string(identification_t *id, char **uri)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
|
||||||
|
#ifdef USE_FUZZING
|
||||||
|
chunk_t proper;
|
||||||
|
chunk_printable(id->get_encoding(id), &proper, '?');
|
||||||
|
len = asprintf(uri, "%.*s", (int)proper.len, proper.ptr);
|
||||||
|
chunk_free(&proper);
|
||||||
|
#else
|
||||||
|
len = asprintf(uri, "%Y", id);
|
||||||
|
#endif
|
||||||
|
if (!len)
|
||||||
|
{
|
||||||
|
free(*uri);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return len > 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroy a CertificateDistributionPoint
|
* Destroy a CertificateDistributionPoint
|
||||||
*/
|
*/
|
||||||
@@ -649,7 +672,7 @@ static bool parse_authorityInfoAccess(chunk_t blob, int level0,
|
|||||||
}
|
}
|
||||||
DBG2(DBG_ASN, " '%Y'", id);
|
DBG2(DBG_ASN, " '%Y'", id);
|
||||||
if (accessMethod == OID_OCSP &&
|
if (accessMethod == OID_OCSP &&
|
||||||
asprintf(&uri, "%Y", id) > 0)
|
gn_to_string(id, &uri))
|
||||||
{
|
{
|
||||||
this->ocsp_uris->insert_last(this->ocsp_uris, uri);
|
this->ocsp_uris->insert_last(this->ocsp_uris, uri);
|
||||||
}
|
}
|
||||||
@@ -818,12 +841,10 @@ static void add_cdps(linked_list_t *list, linked_list_t *uris,
|
|||||||
enumerator_t *enumerator;
|
enumerator_t *enumerator;
|
||||||
x509_cdp_t *cdp;
|
x509_cdp_t *cdp;
|
||||||
char *uri;
|
char *uri;
|
||||||
int len;
|
|
||||||
|
|
||||||
while (uris->remove_last(uris, (void**)&id) == SUCCESS)
|
while (uris->remove_last(uris, (void**)&id) == SUCCESS)
|
||||||
{
|
{
|
||||||
len = asprintf(&uri, "%Y", id);
|
if (gn_to_string(id, &uri))
|
||||||
if (len > 0)
|
|
||||||
{
|
{
|
||||||
if (issuers->get_count(issuers))
|
if (issuers->get_count(issuers))
|
||||||
{
|
{
|
||||||
@@ -847,10 +868,6 @@ static void add_cdps(linked_list_t *list, linked_list_t *uris,
|
|||||||
list->insert_last(list, cdp);
|
list->insert_last(list, cdp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!len)
|
|
||||||
{
|
|
||||||
free(uri);
|
|
||||||
}
|
|
||||||
id->destroy(id);
|
id->destroy(id);
|
||||||
}
|
}
|
||||||
while (issuers->remove_last(issuers, (void**)&id) == SUCCESS)
|
while (issuers->remove_last(issuers, (void**)&id) == SUCCESS)
|
||||||
|
|||||||
Reference in New Issue
Block a user