Make the random number generator predictable when fuzzing. Reviewed-by: Rich Salz <rsalz@openssl.org> GH: #2023
diff --git a/fuzz/README.md b/fuzz/README.md index c5a1ba9..d0c30f4 100644 --- a/fuzz/README.md +++ b/fuzz/README.md
@@ -38,7 +38,8 @@ $ CC=clang ./config enable-fuzz-libfuzzer \ --with-fuzzer-include=../../svn-work/Fuzzer \ --with-fuzzer-lib=../../svn-work/Fuzzer/libFuzzer \ - -DPEDANTIC enable-asan enable-ubsan no-shared + -DPEDANTIC enable-asan enable-ubsan no-shared \ + -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION $ sudo apt-get install make $ LDCMD=clang++ make -j $ fuzz/helper.py $FUZZER
diff --git a/fuzz/server.c b/fuzz/server.c index b8a3ac4..4f2c794 100644 --- a/fuzz/server.c +++ b/fuzz/server.c
@@ -191,6 +191,10 @@ static SSL_CTX *ctx; +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +extern int rand_predictable; +#endif + int FuzzerInitialize(int *argc, char ***argv) { const uint8_t *bufp = kRSAPrivateKeyDER; @@ -214,6 +218,10 @@ OPENSSL_assert(ret == 1); X509_free(cert); +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + rand_predictable = 1; +#endif + return 1; }