X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=fuzz%2Fcms.c;h=d464429a540792d4e6068bb0db8d15472b46e590;hp=7b4fc3d319fcf1023c0e85752380c2637d96b8a7;hb=e5d4233fbd07eac52227c7ec5f479a46f15914bf;hpb=c38bb72797916f2a0ab9906aad29162ca8d53546;ds=inline diff --git a/fuzz/cms.c b/fuzz/cms.c index 7b4fc3d319..d464429a54 100644 --- a/fuzz/cms.c +++ b/fuzz/cms.c @@ -1,7 +1,7 @@ /* * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. * - * Licensed under the OpenSSL licenses, (the "License"); + * Licensed under the Apache License 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * https://www.openssl.org/source/license.html @@ -14,13 +14,42 @@ #include #include +#include #include "fuzzer.h" -int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len) { - BIO *in = BIO_new(BIO_s_mem()); +int FuzzerInitialize(int *argc, char ***argv) +{ + OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); + ERR_clear_error(); + CRYPTO_free_ex_index(0, -1); + return 1; +} + +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); - CMS_ContentInfo *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) +{ +}