Fix invalid atomic type in protobuf decode.
Guard against invalid element types for an atomic in protobuf decode.
Fixed: 447445688
Change-Id: I956cd03e44b4c9c9e0a879adcdc044508dee9686
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/263875
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Auto-Submit: dan sinclair <dsinclair@chromium.org>
diff --git a/src/tint/lang/core/ir/binary/decode.cc b/src/tint/lang/core/ir/binary/decode.cc
index ef9e4f9..106d75f 100644
--- a/src/tint/lang/core/ir/binary/decode.cc
+++ b/src/tint/lang/core/ir/binary/decode.cc
@@ -883,8 +883,13 @@
return mod_out_.Types().Struct(name, std::move(members_out));
}
- const type::Atomic* CreateTypeAtomic(const pb::TypeAtomic& atomic_in) {
- return mod_out_.Types().atomic(Type(atomic_in.type()));
+ const type::Type* CreateTypeAtomic(const pb::TypeAtomic& atomic_in) {
+ const auto* el_ty = Type(atomic_in.type());
+ if (el_ty == nullptr) {
+ err_ << "invalid atomic element type\n";
+ return mod_out_.Types().invalid();
+ }
+ return mod_out_.Types().atomic(el_ty);
}
const type::Type* CreateTypeArray(const pb::TypeArray& array_in) {