diff options
author | Eric Anholt <eric@anholt.net> | 2016-08-21 23:34:57 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2016-08-26 01:37:39 -0700 |
commit | 15fa1a5a7d967e01e479ac5ef0d95734048a0376 (patch) | |
tree | 8c4a0a045ce366060ab5909d836cb80623a1ae07 /components/script/dom/webglrenderingcontext.rs | |
parent | 9b4713f5366aa43ac0db6a8f1d96f33b2f527978 (diff) | |
download | servo-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.
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 8 |
1 files changed, 5 insertions, 3 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), }; |