aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglrenderingcontext.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-07-30 16:11:44 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2018-07-31 11:12:45 +0200
commit15d12159495104ef1c41aa293ed6225832577419 (patch)
treec4f3acf54443d4165d2b117ec258c0b1ee7863f6 /components/script/dom/webglrenderingcontext.rs
parent76f23f7d78b7d92f7a9c18ec873ac57e7b548dfa (diff)
downloadservo-15d12159495104ef1c41aa293ed6225832577419.tar.gz
servo-15d12159495104ef1c41aa293ed6225832577419.zip
Properly check for context ownership of objects passed to gl.is*()
Diffstat (limited to 'components/script/dom/webglrenderingcontext.rs')
-rw-r--r--components/script/dom/webglrenderingcontext.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 336c60d2dc0..ec0d5238555 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -2874,7 +2874,9 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.5
fn IsBuffer(&self, buffer: Option<&WebGLBuffer>) -> bool {
- buffer.map_or(false, |buf| buf.target().is_some() && !buf.is_deleted())
+ buffer.map_or(false, |buf| {
+ self.validate_ownership(buf).is_ok() && buf.target().is_some() && !buf.is_deleted()
+ })
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
@@ -2884,27 +2886,33 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6
fn IsFramebuffer(&self, frame_buffer: Option<&WebGLFramebuffer>) -> bool {
- frame_buffer.map_or(false, |buf| buf.target().is_some() && !buf.is_deleted())
+ frame_buffer.map_or(false, |buf| {
+ self.validate_ownership(buf).is_ok() && buf.target().is_some() && !buf.is_deleted()
+ })
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
fn IsProgram(&self, program: Option<&WebGLProgram>) -> bool {
- program.map_or(false, |p| !p.is_deleted())
+ program.map_or(false, |p| self.validate_ownership(p).is_ok() && !p.is_deleted())
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.7
fn IsRenderbuffer(&self, render_buffer: Option<&WebGLRenderbuffer>) -> bool {
- render_buffer.map_or(false, |buf| buf.ever_bound() && !buf.is_deleted())
+ render_buffer.map_or(false, |buf| {
+ self.validate_ownership(buf).is_ok() && buf.ever_bound() && !buf.is_deleted()
+ })
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
fn IsShader(&self, shader: Option<&WebGLShader>) -> bool {
- shader.map_or(false, |s| !s.is_deleted())
+ shader.map_or(false, |s| self.validate_ownership(s).is_ok() && !s.is_deleted())
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.8
fn IsTexture(&self, texture: Option<&WebGLTexture>) -> bool {
- texture.map_or(false, |tex| tex.target().is_some() && !tex.is_deleted())
+ texture.map_or(false, |tex| {
+ self.validate_ownership(tex).is_ok() && tex.target().is_some() && !tex.is_deleted()
+ })
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3