Fix invalid subtype for subgroup matrix.
When decoding an IR protobuf guard against an invalid subtype in a
subgroup matrix type.
Fixed: 447615953
Change-Id: Ic57b76b586c662774579ae355852d0ec0c22cc60
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/263855
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
diff --git a/src/tint/lang/core/ir/binary/decode.cc b/src/tint/lang/core/ir/binary/decode.cc
index e5e8fa5..ef9e4f9 100644
--- a/src/tint/lang/core/ir/binary/decode.cc
+++ b/src/tint/lang/core/ir/binary/decode.cc
@@ -1011,11 +1011,15 @@
return mod_out_.Types().input_attachment(sub_type);
}
- const type::SubgroupMatrix* CreateTypeSubgroupMatrix(
- SubgroupMatrixKind kind,
- const pb::TypeSubgroupMatrix& subgroup_matrix) {
- return mod_out_.Types().subgroup_matrix(kind, Type(subgroup_matrix.sub_type()),
- subgroup_matrix.columns(), subgroup_matrix.rows());
+ const type::Type* CreateTypeSubgroupMatrix(SubgroupMatrixKind kind,
+ const pb::TypeSubgroupMatrix& subgroup_matrix) {
+ const auto el_ty = Type(subgroup_matrix.sub_type());
+ if (el_ty == nullptr) {
+ err_ << "invalid subtype for subgroup matrix\n";
+ return mod_out_.Types().invalid();
+ }
+ return mod_out_.Types().subgroup_matrix(kind, el_ty, subgroup_matrix.columns(),
+ subgroup_matrix.rows());
}
const type::Type* CreateTypeBuiltinStruct(pb::TypeBuiltinStruct builtin_struct_in) {