X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=fuzz%2Fasn1.c;h=90262defd343d8ba622f67ecea013b6a85a9222f;hp=f7b5571d4f7d2d3e21352232b2dc32332c38fe20;hb=9f08a1c63efa2205aca4361a830ac04407325597;hpb=ad4da7fbc0779fb1730c9862221e19583de69f4f diff --git a/fuzz/asn1.c b/fuzz/asn1.c index f7b5571d4f..90262defd3 100644 --- a/fuzz/asn1.c +++ b/fuzz/asn1.c @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include "fuzzer.h" static ASN1_ITEM_EXP *item_type[] = { @@ -99,7 +101,9 @@ static ASN1_ITEM_EXP *item_type[] = { ASN1_ITEM_ref(IPAddressRange), #endif ASN1_ITEM_ref(ISSUING_DIST_POINT), +#if OPENSSL_API_COMPAT < 0x10200000L ASN1_ITEM_ref(LONG), +#endif ASN1_ITEM_ref(NAME_CONSTRAINTS), ASN1_ITEM_ref(NETSCAPE_CERT_SEQUENCE), ASN1_ITEM_ref(NETSCAPE_SPKAC), @@ -179,12 +183,36 @@ static ASN1_ITEM_EXP *item_type[] = { ASN1_ITEM_ref(X509_REVOKED), ASN1_ITEM_ref(X509_SIG), ASN1_ITEM_ref(X509_VAL), +#if OPENSSL_API_COMPAT < 0x10200000L ASN1_ITEM_ref(ZLONG), +#endif + ASN1_ITEM_ref(INT32), + ASN1_ITEM_ref(ZINT32), + ASN1_ITEM_ref(UINT32), + ASN1_ITEM_ref(ZUINT32), + ASN1_ITEM_ref(INT64), + ASN1_ITEM_ref(ZINT64), + ASN1_ITEM_ref(UINT64), + ASN1_ITEM_ref(ZUINT64), NULL }; +static ASN1_PCTX *pctx; + int FuzzerInitialize(int *argc, char ***argv) { + pctx = ASN1_PCTX_new(); + ASN1_PCTX_set_flags(pctx, ASN1_PCTX_FLAGS_SHOW_ABSENT | + ASN1_PCTX_FLAGS_SHOW_SEQUENCE | ASN1_PCTX_FLAGS_SHOW_SSOF | + ASN1_PCTX_FLAGS_SHOW_TYPE | ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME); + ASN1_PCTX_set_str_flags(pctx, ASN1_STRFLGS_UTF8_CONVERT | + ASN1_STRFLGS_SHOW_TYPE | ASN1_STRFLGS_DUMP_ALL); + + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); + ERR_get_state(); + CRYPTO_free_ex_index(0, -1); + FuzzerSetRand(); + return 1; } @@ -192,13 +220,6 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len) { int n; - ASN1_PCTX *pctx = ASN1_PCTX_new(); - - ASN1_PCTX_set_flags(pctx, ASN1_PCTX_FLAGS_SHOW_ABSENT | - ASN1_PCTX_FLAGS_SHOW_SEQUENCE | ASN1_PCTX_FLAGS_SHOW_SSOF | - ASN1_PCTX_FLAGS_SHOW_TYPE | ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME); - ASN1_PCTX_set_str_flags(pctx, ASN1_STRFLGS_UTF8_CONVERT | - ASN1_STRFLGS_SHOW_TYPE | ASN1_STRFLGS_DUMP_ALL); for (n = 0; item_type[n] != NULL; ++n) { const uint8_t *b = buf; @@ -218,11 +239,12 @@ int FuzzerTestOneInput(const uint8_t *buf, size_t len) } } - ASN1_PCTX_free(pctx); + ERR_clear_error(); return 0; } void FuzzerCleanup(void) { + ASN1_PCTX_free(pctx); }