Resolver: validate vector swizzle index is valid
Bug: tint:217
Change-Id: Ie8988b68f43914d1b05d982c8aa6f8b7346e2d8f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/52800
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index 99dc700..3f9a9da 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -1983,6 +1983,12 @@
expr->member()->source().Begin() + swizzle.size());
return false;
}
+
+ if (swizzle.back() >= vec->size()) {
+ diagnostics_.add_error("invalid vector swizzle member",
+ expr->member()->source());
+ return false;
+ }
}
if (size < 1 || size > 4) {