X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=fuzz%2Fcms.c;h=959ef9365ad1f60c1d0405bf78dfa4bfaa0274d5;hp=f97173add354f77fda7953f257523dd02b4c919a;hb=d69d8f904c9c558c7a9455ee816e494690d80ca8;hpb=90d28f0519427ffc293f880c423d9c4395a6fcd4 diff --git a/fuzz/cms.c b/fuzz/cms.c index f97173add3..959ef9365a 100644 --- a/fuzz/cms.c +++ b/fuzz/cms.c @@ -14,19 +14,42 @@ #include #include +#include #include "fuzzer.h" -int FuzzerInitialize(int *argc, char ***argv) { +int FuzzerInitialize(int *argc, char ***argv) +{ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); + ERR_get_state(); + CRYPTO_free_ex_index(0, -1); return 1; } -int FuzzerTestOneInput(const uint8_t *buf, size_t len) { - CMS_ContentInfo *i; - BIO *in = BIO_new(BIO_s_mem()); +int FuzzerTestOneInput(const uint8_t *buf, size_t len) +{ + CMS_ContentInfo *cms; + BIO *in; + if (len == 0) + return 0; + + in = BIO_new(BIO_s_mem()); OPENSSL_assert((size_t)BIO_write(in, buf, len) == len); - i = d2i_CMS_bio(in, NULL); - CMS_ContentInfo_free(i); + cms = d2i_CMS_bio(in, NULL); + if (cms != NULL) { + BIO *out = BIO_new(BIO_s_null()); + + i2d_CMS_bio(out, cms); + BIO_free(out); + CMS_ContentInfo_free(cms); + } + BIO_free(in); + ERR_clear_error(); + return 0; } + +void FuzzerCleanup(void) +{ +}