diff options
author | MarcoFalke <falke.marco@gmail.com> | 2020-12-31 08:50:08 +0100 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2020-12-31 08:49:10 +0100 |
commit | fafce49336e18033b26948886bbd7342c779b246 (patch) | |
tree | 05ffd228f0f0e740ce429a1a7feaf96346ca5f39 /src | |
parent | f1f26b8d5baec4a45a3a9ba0440cd4eff7af8407 (diff) |
fuzz: Bump FuzzedDataProvider.h
Latest version from https://raw.githubusercontent.com/llvm/llvm-project/70de7e0d9a95b7fcd7c105b06bd90fdf4e01f563/compiler-rt/include/fuzzer/FuzzedDataProvider.h
Diffstat (limited to 'src')
-rw-r--r-- | src/test/fuzz/FuzzedDataProvider.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/test/fuzz/FuzzedDataProvider.h b/src/test/fuzz/FuzzedDataProvider.h index 83bcd0134a..744a9d78ce 100644 --- a/src/test/fuzz/FuzzedDataProvider.h +++ b/src/test/fuzz/FuzzedDataProvider.h @@ -14,6 +14,7 @@ #define LLVM_FUZZER_FUZZED_DATA_PROVIDER_H_ #include <algorithm> +#include <array> #include <climits> #include <cstddef> #include <cstdint> @@ -71,6 +72,8 @@ class FuzzedDataProvider { // Returns a value from the given array. template <typename T, size_t size> T PickValueInArray(const T (&array)[size]); + template <typename T, size_t size> + T PickValueInArray(const std::array<T, size> &array); template <typename T> T PickValueInArray(std::initializer_list<const T> list); // Writes data to the given destination and returns number of bytes written. @@ -301,6 +304,12 @@ T FuzzedDataProvider::PickValueInArray(const T (&array)[size]) { return array[ConsumeIntegralInRange<size_t>(0, size - 1)]; } +template <typename T, size_t size> +T FuzzedDataProvider::PickValueInArray(const std::array<T, size> &array) { + static_assert(size > 0, "The array must be non empty."); + return array[ConsumeIntegralInRange<size_t>(0, size - 1)]; +} + template <typename T> T FuzzedDataProvider::PickValueInArray(std::initializer_list<const T> list) { // TODO(Dor1s): switch to static_assert once C++14 is allowed. |