diff options
author | Eric Anholt <eric@anholt.net> | 2016-08-21 23:43:05 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2016-08-26 12:58:51 -0700 |
commit | b8b74e4b37dd9488ddef6362098aa45b5d6d3a3c (patch) | |
tree | c2ba01e5288b2f3917e03703a036d3ef74e8f759 /components/script/dom | |
parent | 545ae86dff6513f1f5de083ba3ce64b181368482 (diff) | |
download | servo-b8b74e4b37dd9488ddef6362098aa45b5d6d3a3c.tar.gz servo-b8b74e4b37dd9488ddef6362098aa45b5d6d3a3c.zip |
webgl: Do validation of glScissor/glViewport(width, height) on the DOM side.
Avoids testcase CRASHes due to unexpected GL errors.
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 059c6941bc1..b09d768fea0 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -1481,6 +1481,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4 fn Scissor(&self, x: i32, y: i32, width: i32, height: i32) { + if width < 0 || height < 0 { + return self.webgl_error(InvalidValue) + } + self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::Scissor(x, y, width, height))) .unwrap() @@ -1893,6 +1897,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4 fn Viewport(&self, x: i32, y: i32, width: i32, height: i32) { + if width < 0 || height < 0 { + return self.webgl_error(InvalidValue) + } + self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::Viewport(x, y, width, height))) .unwrap() |