Skip to content

Commit 2136d17

Browse files
committed
[compiler-rt] Add ConsumeRandomLengthString() version without arguments.
Reviewers: hctim, metzman Subscribers: dberris, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D76448
1 parent 5bd0611 commit 2136d17

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

compiler-rt/include/fuzzer/FuzzedDataProvider.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@ class FuzzedDataProvider {
139139
return result;
140140
}
141141

142+
// Returns a std::string of length from 0 to |remaining_bytes_|.
143+
std::string ConsumeRandomLengthString() {
144+
return ConsumeRandomLengthString(remaining_bytes_);
145+
}
146+
142147
// Returns a std::vector containing all remaining bytes of the input data.
143148
template <typename T> std::vector<T> ConsumeRemainingBytes() {
144149
return ConsumeBytes<T>(remaining_bytes_);

compiler-rt/lib/fuzzer/tests/FuzzedDataProviderUnittest.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,14 +190,26 @@ TEST(FuzzedDataProvider, ConsumeRandomLengthString) {
190190
"\x1D\xBD\x4E\x17\x04\x1E\xBA\x26\xAC\x1F\xE3\x37\x1C\x15\x43"
191191
"\x60\x41\x2A\x7C\xCA\x70\xCE\xAB\x20\x24\xF8\xD9\x1F\x14\x7C"),
192192
DataProv.ConsumeRandomLengthString(31337));
193-
EXPECT_EQ(std::string(Data + 141, Data + 141 + 5),
193+
size_t Offset = 141;
194+
EXPECT_EQ(std::string(Data + Offset, Data + Offset + 5),
194195
DataProv.ConsumeRandomLengthString(5));
195-
EXPECT_EQ(std::string(Data + 141 + 5, Data + 141 + 5 + 2),
196+
Offset += 5;
197+
EXPECT_EQ(std::string(Data + Offset, Data + Offset + 2),
196198
DataProv.ConsumeRandomLengthString(2));
199+
Offset += 2;
200+
201+
// Call the overloaded method without arguments (uses max length available).
202+
EXPECT_EQ(std::string(Data + Offset, Data + Offset + 664),
203+
DataProv.ConsumeRandomLengthString());
204+
Offset += 664 + 2; // +2 because of '\' character followed by any other byte.
205+
206+
EXPECT_EQ(std::string(Data + Offset, Data + Offset + 92),
207+
DataProv.ConsumeRandomLengthString());
208+
Offset += 92 + 2;
197209

198210
// Exhaust the buffer.
199211
auto String = DataProv.ConsumeBytesAsString(31337);
200-
EXPECT_EQ(size_t(876), String.length());
212+
EXPECT_EQ(size_t(116), String.length());
201213
EXPECT_EQ(std::string(), DataProv.ConsumeRandomLengthString(1));
202214
}
203215

0 commit comments

Comments
 (0)