From: Kurt Roeckx Date: Wed, 7 Dec 2016 22:04:35 +0000 (+0100) Subject: Make asn1 fuzzer more reproducible X-Git-Tag: OpenSSL_1_1_1-pre1~2875 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=231f13370b52cdf52f286b8cadb0e61308841736;p=oweals%2Fopenssl.git Make asn1 fuzzer more reproducible Reviewed-by: Rich Salz GH: #2041 --- diff --git a/fuzz/asn1.c b/fuzz/asn1.c index f7b5571d4f..f29fde5d4d 100644 --- a/fuzz/asn1.c +++ b/fuzz/asn1.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "fuzzer.h" static ASN1_ITEM_EXP *item_type[] = { @@ -183,8 +184,21 @@ static ASN1_ITEM_EXP *item_type[] = { 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); + return 1; } @@ -192,13 +206,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 +225,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); }