summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Fuzzer/FuzzerFnAdapter.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Fuzzer/FuzzerFnAdapter.h')
-rw-r--r--llvm/lib/Fuzzer/FuzzerFnAdapter.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Fuzzer/FuzzerFnAdapter.h b/llvm/lib/Fuzzer/FuzzerFnAdapter.h
index eec378e7e3b..ae121d238dc 100644
--- a/llvm/lib/Fuzzer/FuzzerFnAdapter.h
+++ b/llvm/lib/Fuzzer/FuzzerFnAdapter.h
@@ -92,6 +92,17 @@ size_t UnpackSingle<std::vector<uint8_t>>(const uint8_t *Data, size_t Size,
return Size - Len - 1;
}
+template <>
+size_t UnpackSingle<std::string>(const uint8_t *Data, size_t Size,
+ std::string *Value) {
+ if (Size < 1)
+ return Size;
+ size_t Len = std::min(static_cast<size_t>(*Data), Size - 1);
+ std::string S(Data + 1, Data + 1 + Len);
+ Value->swap(S);
+ return Size - Len - 1;
+}
+
// Unpacking into arbitrary tuple.
// Recursion guard.
OpenPOWER on IntegriCloud