aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2016-08-21 23:34:57 -0700
committerEric Anholt <eric@anholt.net>2016-08-26 01:37:39 -0700
commit15fa1a5a7d967e01e479ac5ef0d95734048a0376 (patch)
tree8c4a0a045ce366060ab5909d836cb80623a1ae07
parent9b4713f5366aa43ac0db6a8f1d96f33b2f527978 (diff)
downloadservo-15fa1a5a7d967e01e479ac5ef0d95734048a0376.tar.gz
servo-15fa1a5a7d967e01e479ac5ef0d95734048a0376.zip
webgl: Fix validation of drawElements()'s type argument.
Fixes crash due to unexpected GL errors in gl-drawelements.html.
-rw-r--r--components/script/dom/webglrenderingcontext.rs8
-rw-r--r--tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/gl-drawelements.html.ini3
2 files changed, 5 insertions, 6 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 4db5654d738..059c6941bc1 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -1165,10 +1165,12 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.11
fn DrawElements(&self, mode: u32, count: i32, type_: u32, offset: i64) {
+ // From the GLES 2.0.25 spec, page 21:
+ //
+ // "type must be one of UNSIGNED_BYTE or UNSIGNED_SHORT"
let type_size = match type_ {
- constants::BYTE | constants::UNSIGNED_BYTE => 1,
- constants::SHORT | constants::UNSIGNED_SHORT => 2,
- constants::INT | constants::UNSIGNED_INT | constants::FLOAT => 4,
+ constants::UNSIGNED_BYTE => 1,
+ constants::UNSIGNED_SHORT => 2,
_ => return self.webgl_error(InvalidEnum),
};
diff --git a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/gl-drawelements.html.ini b/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/gl-drawelements.html.ini
deleted file mode 100644
index fbdf4eaeed8..00000000000
--- a/tests/wpt/metadata/webgl/conformance-1.0.3/conformance/rendering/gl-drawelements.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[gl-drawelements.html]
- type: testharness
- expected: CRASH