diff options
author | Tim Taubert <ttaubert@mozilla.com> | 2017-01-26 11:11:11 +0100 |
---|---|---|
committer | Tim Taubert <ttaubert@mozilla.com> | 2017-01-26 11:11:11 +0100 |
commit | 8755e4aaa86ba5c53b3a76825bd97d6ded40d503 (patch) | |
tree | 291649bee01ce3038c7a36368bae19b9ba7edf22 /fuzz/shared.h | |
parent | 4bd75b18618066d0a6230c876a1bc3f597004484 (diff) | |
download | nss-hg-8755e4aaa86ba5c53b3a76825bd97d6ded40d503.tar.gz |
Bug 1334062 - Remove libFuzzer dependencies from fuzzers r=franziskus
Differential Revision: https://nss-review.dev.mozaws.net/D177
Diffstat (limited to 'fuzz/shared.h')
-rw-r--r-- | fuzz/shared.h | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/fuzz/shared.h b/fuzz/shared.h index bfa4e8f52..24ca51f85 100644 --- a/fuzz/shared.h +++ b/fuzz/shared.h @@ -7,33 +7,34 @@ #ifndef shared_h__ #define shared_h__ -#include "FuzzerRandom.h" +#include <assert.h> +#include <random> #include "cert.h" #include "nss.h" +extern "C" size_t LLVMFuzzerMutate(uint8_t *Data, size_t Size, size_t MaxSize); +extern "C" size_t LLVMFuzzerCustomMutator(uint8_t *Data, size_t Size, + size_t MaxSize, unsigned int Seed); + class NSSDatabase { public: NSSDatabase() { assert(NSS_NoDB_Init(nullptr) == SECSuccess); } ~NSSDatabase() { assert(NSS_Shutdown() == SECSuccess); } }; -size_t CustomMutate(std::vector<decltype(LLVMFuzzerCustomMutator) *> mutators, - uint8_t *Data, size_t Size, size_t MaxSize, - unsigned int Seed) { - fuzzer::Random R(Seed); +typedef std::vector<decltype(LLVMFuzzerCustomMutator) *> Mutators; + +size_t CustomMutate(Mutators &mutators, uint8_t *Data, size_t Size, + size_t MaxSize, unsigned int Seed) { + std::mt19937 rng(Seed); + static std::bernoulli_distribution bdist; - if (R.RandBool()) { - auto idx = R(mutators.size()); - return mutators.at(idx)(Data, Size, MaxSize, Seed); + if (bdist(rng)) { + std::uniform_int_distribution<size_t> idist(0, mutators.size() - 1); + return mutators.at(idist(rng))(Data, Size, MaxSize, Seed); } return LLVMFuzzerMutate(Data, Size, MaxSize); } -#define ADD_CUSTOM_MUTATORS(...) \ - extern "C" size_t LLVMFuzzerCustomMutator( \ - uint8_t *Data, size_t Size, size_t MaxSize, unsigned int Seed) { \ - return CustomMutate(__VA_ARGS__, Data, Size, MaxSize, Seed); \ - } - #endif // shared_h__ |