diff options
author | Kurt Roeckx <kurt@roeckx.be> | 2017-02-19 16:59:25 +0100 |
---|---|---|
committer | Kurt Roeckx <kurt@roeckx.be> | 2017-04-16 19:30:15 +0200 |
commit | 14a6570f318562faf850f842ef3ce56f54ddc890 (patch) | |
tree | 4e2cd6f4071d81f16be79d8083f9a834273e18c9 | |
parent | 930aa9eeedd57478418ee267bb91d15ac95b1a78 (diff) |
Use a fixed time when fuzzing.
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Andy Polyakov <appro@openssl.org>
GH: #2683
-rw-r--r-- | fuzz/client.c | 18 | ||||
-rw-r--r-- | fuzz/server.c | 19 |
2 files changed, 36 insertions, 1 deletions
diff --git a/fuzz/client.c b/fuzz/client.c index 9404a95a68..622d782b2c 100644 --- a/fuzz/client.c +++ b/fuzz/client.c @@ -8,6 +8,7 @@ * or in the file LICENSE in the source distribution. */ +#include <time.h> #include <openssl/rand.h> #include <openssl/ssl.h> #include <openssl/rsa.h> @@ -25,6 +26,23 @@ extern int rand_predictable; /* unused, to avoid warning. */ static int idx; +#define FUZZTIME 1485898104 + +#define TIME_IMPL(t) { if (t != NULL) *t = FUZZTIME; return FUZZTIME; } + +/* + * This might not in all cases and still get the current time + * instead of the fixed time. This will just result in things + * not being fully reproducible and have a slightly different + * coverage. + */ +#if defined(_WIN32) && defined(_TIME64_T_DEFINED) +time64_t _time64(time64_t *t) TIME_IMPL(t) +#endif +#if !defined(_WIN32) || !defined(_MSC_VER) +time_t time(time_t *t) TIME_IMPL(t) +#endif + int FuzzerInitialize(int *argc, char ***argv) { STACK_OF(SSL_COMP) *comp_methods; diff --git a/fuzz/server.c b/fuzz/server.c index 5bbba1c26a..8c5e2d8d4a 100644 --- a/fuzz/server.c +++ b/fuzz/server.c @@ -12,7 +12,7 @@ /* Test first part of SSL server handshake. */ - +#include <time.h> #include <openssl/rand.h> #include <openssl/ssl.h> #include <openssl/rsa.h> @@ -473,6 +473,23 @@ extern int rand_predictable; /* unused, to avoid warning. */ static int idx; +#define FUZZTIME 1485898104 + +#define TIME_IMPL(t) { if (t != NULL) *t = FUZZTIME; return FUZZTIME; } + +/* + * This might not in all cases and still get the current time + * instead of the fixed time. This will just result in things + * not being fully reproducible and have a slightly different + * coverage. + */ +#if defined(_WIN32) && defined(_TIME64_T_DEFINED) +time64_t _time64(time64_t *t) TIME_IMPL(t) +#endif +#if !defined(_WIN32) || !defined(_MSC_VER) +time_t time(time_t *t) TIME_IMPL(t) +#endif + int FuzzerInitialize(int *argc, char ***argv) { STACK_OF(SSL_COMP) *comp_methods; |