#include <openssl/rand.h>
#include <openssl/ssl.h>
+#include <openssl/rsa.h>
#include "fuzzer.h"
static const uint8_t kCertificateDER[] = {
static SSL_CTX *ctx;
-int FuzzerInitialize(int *argc, char ***argv) {
+int FuzzerInitialize(int *argc, char ***argv)
+{
const uint8_t *bufp = kRSAPrivateKeyDER;
RSA *privkey;
EVP_PKEY *pkey;
return 1;
}
-int FuzzerTestOneInput(const uint8_t *buf, size_t len) {
+int FuzzerTestOneInput(const uint8_t *buf, size_t len)
+{
+ SSL *server;
+ BIO *in;
+ BIO *out;
+ if (!len) {
+ return 0;
+ }
/* TODO: make this work for OpenSSL. There's a PREDICT define that may do
* the job.
* TODO: use the ossltest engine (optionally?) to disable crypto checks.
*/
/* This only fuzzes the initial flow from the client so far. */
- SSL *server = SSL_new(ctx);
- BIO *in = BIO_new(BIO_s_mem());
- BIO *out = BIO_new(BIO_s_mem());
+ server = SSL_new(ctx);
+ in = BIO_new(BIO_s_mem());
+ out = BIO_new(BIO_s_mem());
SSL_set_bio(server, in, out);
SSL_set_accept_state(server);
OPENSSL_assert((size_t)BIO_write(in, buf, len) == len);
SSL_free(server);
return 0;
}
+
+void FuzzerCleanup(void)
+{
+ SSL_CTX_free(ctx);
+}