Skip to content

Commit 08d1890

Browse files
lowdaniecopybara-github
authored andcommitted
Fix the validation of Arbitrary<string_view>.
PiperOrigin-RevId: 914885797
1 parent e8c9360 commit 08d1890

4 files changed

Lines changed: 28 additions & 4 deletions

File tree

domain_tests/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,10 @@ cc_test(
281281
":domain_testing",
282282
"@abseil-cpp//absl/container:flat_hash_set",
283283
"@abseil-cpp//absl/random",
284+
"@abseil-cpp//absl/strings:string_view",
284285
"@com_google_fuzztest//fuzztest:domain_core",
285286
"@com_google_fuzztest//fuzztest/internal:table_of_recent_compares",
287+
"@com_google_fuzztest//fuzztest/internal/domains:core_domains_impl",
286288
"@googletest//:gtest_main",
287289
],
288290
)

domain_tests/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,8 @@ fuzztest_cc_test(
275275
fuzztest::domain_testing
276276
absl::flat_hash_set
277277
absl::random_random
278+
absl::status
279+
absl::strings
278280
fuzztest::domain_core
279281
fuzztest::table_of_recent_compares
280282
GTest::gmock_main

domain_tests/string_domains_test.cc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,10 @@
2626
#include "gtest/gtest.h"
2727
#include "absl/container/flat_hash_set.h"
2828
#include "absl/random/random.h"
29+
#include "absl/strings/string_view.h"
2930
#include "./fuzztest/domain_core.h"
3031
#include "./domain_tests/domain_testing.h"
32+
#include "./fuzztest/internal/domains/container_of_impl.h"
3133
#include "./fuzztest/internal/table_of_recent_compares.h"
3234

3335
namespace fuzztest {
@@ -43,8 +45,10 @@ using ::testing::HasSubstr;
4345
using ::testing::IsTrue;
4446
using ::testing::Lt;
4547
using ::testing::Matches;
48+
using ::testing::Not;
4649
using ::testing::ResultOf;
4750
using ::testing::SizeIs;
51+
using ::testing::status::IsOk;
4852

4953
template <typename T>
5054
class HandleTypeTest : public testing::Test {};
@@ -225,5 +229,21 @@ TEST(Domain, AsciiStringUsesDictionary) {
225229
EXPECT_THAT(mutants, Contains(HasSubstr("1234")));
226230
}
227231

232+
TEST(StringViewTest, ValidationFailsWhenExceedingDefaultMaxSize) {
233+
auto domain = Arbitrary<std::string_view>();
234+
235+
// Value larger than default max size should be invalid.
236+
std::vector<char> invalid_corpus(internal::kDefaultContainerMaxSize + 1, 'a');
237+
EXPECT_THAT(domain.ValidateCorpusValue(invalid_corpus), Not(IsOk()));
238+
}
239+
240+
TEST(AbslStringViewTest, ValidationFailsWhenExceedingDefaultMaxSize) {
241+
auto domain = Arbitrary<absl::string_view>();
242+
243+
// Value larger than default max size should be invalid.
244+
std::vector<char> invalid_corpus(internal::kDefaultContainerMaxSize + 1, 'a');
245+
EXPECT_THAT(domain.ValidateCorpusValue(invalid_corpus), Not(IsOk()));
246+
}
247+
228248
} // namespace
229249
} // namespace fuzztest

fuzztest/internal/domains/arbitrary_impl.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -364,8 +364,8 @@ class ArbitraryImpl<std::basic_string_view<Char>>
364364
return IRObject::FromCorpus(v);
365365
}
366366

367-
absl::Status ValidateCorpusValue(const corpus_type&) const {
368-
return absl::OkStatus(); // Nothing to validate.
367+
absl::Status ValidateCorpusValue(const corpus_type& val) const {
368+
return inner_.ValidateCorpusValue(val);
369369
}
370370

371371
private:
@@ -423,8 +423,8 @@ class ArbitraryImpl<absl::string_view>
423423
return IRObject::FromCorpus(v);
424424
}
425425

426-
absl::Status ValidateCorpusValue(const corpus_type&) const {
427-
return absl::OkStatus(); // Nothing to validate.
426+
absl::Status ValidateCorpusValue(const corpus_type& val) const {
427+
return inner_.ValidateCorpusValue(val);
428428
}
429429

430430
private:

0 commit comments

Comments
 (0)