summaryrefslogtreecommitdiff
path: root/fuzz/shared.h
diff options
context:
space:
mode:
authorTim Taubert <ttaubert@mozilla.com>2017-01-26 11:11:11 +0100
committerTim Taubert <ttaubert@mozilla.com>2017-01-26 11:11:11 +0100
commit8755e4aaa86ba5c53b3a76825bd97d6ded40d503 (patch)
tree291649bee01ce3038c7a36368bae19b9ba7edf22 /fuzz/shared.h
parent4bd75b18618066d0a6230c876a1bc3f597004484 (diff)
downloadnss-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.h29
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__