diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2018-07-09 10:32:09 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2018-07-09 15:27:51 +0200 |
commit | ef7d495838f039111459a93bc5c9816f22062a2e (patch) | |
tree | df5ad9c1821de4c8a752382554e47cf02d313df9 /components/script/dom/webglrenderingcontext.rs | |
parent | fc0e403fb0791d29cdb3d66b9460675807f5c695 (diff) | |
download | servo-ef7d495838f039111459a93bc5c9816f22062a2e.tar.gz servo-ef7d495838f039111459a93bc5c9816f22062a2e.zip |
Properly implement the checks for gl.renderbufferStorage (fixes #20563)
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index 3988c93646f..34d085d7f6b 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -3863,27 +3863,14 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext { } // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.7 - fn RenderbufferStorage(&self, target: u32, internal_format: u32, - width: i32, height: i32) { - // From the GLES 2.0.25 spec: - // - // "target must be RENDERBUFFER." + fn RenderbufferStorage(&self, target: u32, internal_format: u32, width: i32, height: i32) { if target != constants::RENDERBUFFER { return self.webgl_error(InvalidEnum); } - // From the GLES 2.0.25 spec: - // - // "If either width or height is greater than the value of - // MAX_RENDERBUFFER_SIZE , the error INVALID_VALUE is - // generated." - // - // and we have to throw out negative-size values as well just - // like for TexImage. - // - // FIXME: Handle max_renderbuffer_size, which doesn't seem to - // be in limits. - if width < 0 || height < 0 { + let max = self.limits.max_renderbuffer_size; + + if width < 0 || width as u32 > max || height < 0 || height as u32 > max { return self.webgl_error(InvalidValue); } |