mirror of https://github.com/openssl/openssl.git
Make the random number generator predictable when fuzzing.
Reviewed-by: Rich Salz <rsalz@openssl.org> GH: #2023
This commit is contained in:
parent
3a85d05fb3
commit
3a9b9b2deb
|
@ -33,7 +33,7 @@
|
|||
# include <openssl/fips.h>
|
||||
#endif
|
||||
|
||||
#ifdef BN_DEBUG
|
||||
#if defined(BN_DEBUG) || defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
|
||||
# define PREDICT
|
||||
#endif
|
||||
|
||||
|
@ -307,7 +307,7 @@ static int rand_bytes(unsigned char *buf, int num, int pseudo)
|
|||
|
||||
#ifdef PREDICT
|
||||
if (rand_predictable) {
|
||||
static unsigned char val = 0;
|
||||
unsigned char val = 0;
|
||||
|
||||
for (i = 0; i < num; i++)
|
||||
buf[i] = val++;
|
||||
|
|
|
@ -38,7 +38,8 @@ Configure for fuzzing:
|
|||
$ 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
|
||||
|
|
|
@ -191,6 +191,10 @@ static const uint8_t kRSAPrivateKeyDER[] = {
|
|||
|
||||
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 @@ int FuzzerInitialize(int *argc, char ***argv)
|
|||
OPENSSL_assert(ret == 1);
|
||||
X509_free(cert);
|
||||
|
||||
#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
rand_predictable = 1;
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue