diff options
author | Eric Anholt <eric@anholt.net> | 2016-08-13 23:46:25 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2016-11-05 11:49:30 -0700 |
commit | 9a10666941ea4bbec03205609d1b578a749251c6 (patch) | |
tree | 5f4e09b35147aeb8c97ca4564394bb6d93c8f81c /components/script/dom/webglrenderingcontext.rs | |
parent | 3277c5281cf7d4345d8c0eb11a8f451a5796eb3e (diff) | |
download | servo-9a10666941ea4bbec03205609d1b578a749251c6.tar.gz servo-9a10666941ea4bbec03205609d1b578a749251c6.zip |
webgl: Throw an error on readPixels(width < 0 || height < 0)
Otherwise gleam will try to allocate a negative size area for the
result, and we'll panic with oom.
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 24bbb1a9dbb..781b95c60bf 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -1777,6 +1777,10 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { _ => return Ok(self.webgl_error(InvalidOperation)), } + if width < 0 || height < 0 { + return Ok(self.webgl_error(InvalidValue)); + } + let (sender, receiver) = ipc::channel().unwrap(); self.ipc_renderer .send(CanvasMsg::WebGL(WebGLCommand::ReadPixels(x, y, width, height, format, pixel_type, sender))) |