diff options
author | Kurt Roeckx <kurt@roeckx.be> | 2016-12-07 23:04:35 +0100 |
---|---|---|
committer | Kurt Roeckx <kurt@roeckx.be> | 2016-12-08 19:06:17 +0100 |
commit | 231f13370b52cdf52f286b8cadb0e61308841736 (patch) | |
tree | 9175b2047719324895de11ec734dd82c8568f17d /fuzz | |
parent | 7d152a3c4f58bc2c4e94946e2a8dbf1a855a52f2 (diff) |
Make asn1 fuzzer more reproducible
Reviewed-by: Rich Salz <rsalz@openssl.org>
GH: #2041
Diffstat (limited to 'fuzz')
-rw-r--r-- | fuzz/asn1.c | 24 |
1 files changed, 16 insertions, 8 deletions
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 <openssl/ts.h> #include <openssl/x509v3.h> #include <openssl/cms.h> +#include <openssl/err.h> #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); } |