Interrupt fuzzer if invalid program is generated
If a a valid shader is input into Tint an valid shader should be
output, if the output is invalid then there is a bug in Tint.
BUG=tint:721
Change-Id: Id3fe80eeb65fa55276d74e2f4868e276bd52ec86
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50000
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/fuzzers/tint_common_fuzzer.cc b/fuzzers/tint_common_fuzzer.cc
index e4a77c0..b47a327 100644
--- a/fuzzers/tint_common_fuzzer.cc
+++ b/fuzzers/tint_common_fuzzer.cc
@@ -33,6 +33,15 @@
__builtin_trap();
}
+[[noreturn]] void ValidityErrorReporter() {
+ auto printer = tint::diag::Printer::create(stderr, true);
+ printer->write(
+ "Fuzzing detected valid input program being transformed into an invalid "
+ "output progam",
+ {diag::Color::kRed, true});
+ __builtin_trap();
+}
+
bool ExtractBindingRemapperInputs(const uint8_t** data,
size_t* size,
tint::transform::DataMap* inputs) {
@@ -244,7 +253,7 @@
if (transform_manager_) {
auto out = transform_manager_->Run(&program, transform_inputs_);
if (!out.program.IsValid()) {
- return 0;
+ ValidityErrorReporter();
}
program = std::move(out.program);