Title: [242872] releases/WebKitGTK/webkit-2.24
Revision
242872
Author
[email protected]
Date
2019-03-13 02:25:24 -0700 (Wed, 13 Mar 2019)

Log Message

Merge r242826 - [WebGL] WebGLBuffer can be too large
https://bugs.webkit.org/show_bug.cgi?id=195068
<rdar://problem/48414289>

Reviewed by Antoine Quint.

Source/WebCore:

When creating an element array buffer, make sure to
test against the maximum size of an ArrayBuffer, rather
than just assume it can be created.

Test: fast/canvas/webgl/largeBuffer.html

* html/canvas/WebGLBuffer.cpp:
(WebCore::WebGLBuffer::associateBufferDataImpl):

LayoutTests:

* fast/canvas/webgl/largeBuffer-expected.txt: Added.
* fast/canvas/webgl/largeBuffer.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.24/LayoutTests/ChangeLog (242871 => 242872)


--- releases/WebKitGTK/webkit-2.24/LayoutTests/ChangeLog	2019-03-13 09:25:19 UTC (rev 242871)
+++ releases/WebKitGTK/webkit-2.24/LayoutTests/ChangeLog	2019-03-13 09:25:24 UTC (rev 242872)
@@ -1,3 +1,14 @@
+2019-03-12  Dean Jackson  <[email protected]>
+
+        [WebGL] WebGLBuffer can be too large
+        https://bugs.webkit.org/show_bug.cgi?id=195068
+        <rdar://problem/48414289>
+
+        Reviewed by Antoine Quint.
+
+        * fast/canvas/webgl/largeBuffer-expected.txt: Added.
+        * fast/canvas/webgl/largeBuffer.html: Added.
+
 2019-03-05  Said Abou-Hallawa  <[email protected]>
 
         SVGPathSegList.insertItemBefore() should fail if the newItem belongs to an animating animPathSegList

Added: releases/WebKitGTK/webkit-2.24/LayoutTests/fast/canvas/webgl/largeBuffer-expected.txt (0 => 242872)


--- releases/WebKitGTK/webkit-2.24/LayoutTests/fast/canvas/webgl/largeBuffer-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.24/LayoutTests/fast/canvas/webgl/largeBuffer-expected.txt	2019-03-13 09:25:24 UTC (rev 242872)
@@ -0,0 +1,7 @@
+CONSOLE MESSAGE: line 12: WebGL: INVALID_VALUE: bufferData: invalid buffer
+CONSOLE MESSAGE: line 15: WebGL: INVALID_VALUE: bufferSubData: offset out of range
+PASS size is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+

Added: releases/WebKitGTK/webkit-2.24/LayoutTests/fast/canvas/webgl/largeBuffer.html (0 => 242872)


--- releases/WebKitGTK/webkit-2.24/LayoutTests/fast/canvas/webgl/largeBuffer.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.24/LayoutTests/fast/canvas/webgl/largeBuffer.html	2019-03-13 09:25:24 UTC (rev 242872)
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<script src=""
+<body>
+<canvas></canvas>
+<script>
+const canvas = document.querySelector("canvas");
+const gl = canvas.getContext("webgl");
+
+const b = gl.createBuffer();
+gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, b);
+gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, 0xf000000000, gl.STREAM_DRAW);
+const size = gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_SIZE);
+shouldBeEqualToNumber("size", 0);
+gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0x4444444444, new ArrayBuffer(32));
+</script>
+</body>
+</html>
+

Modified: releases/WebKitGTK/webkit-2.24/Source/WebCore/ChangeLog (242871 => 242872)


--- releases/WebKitGTK/webkit-2.24/Source/WebCore/ChangeLog	2019-03-13 09:25:19 UTC (rev 242871)
+++ releases/WebKitGTK/webkit-2.24/Source/WebCore/ChangeLog	2019-03-13 09:25:24 UTC (rev 242872)
@@ -1,3 +1,20 @@
+2019-03-12  Dean Jackson  <[email protected]>
+
+        [WebGL] WebGLBuffer can be too large
+        https://bugs.webkit.org/show_bug.cgi?id=195068
+        <rdar://problem/48414289>
+
+        Reviewed by Antoine Quint.
+
+        When creating an element array buffer, make sure to
+        test against the maximum size of an ArrayBuffer, rather
+        than just assume it can be created.
+
+        Test: fast/canvas/webgl/largeBuffer.html
+
+        * html/canvas/WebGLBuffer.cpp:
+        (WebCore::WebGLBuffer::associateBufferDataImpl):
+
 2019-03-05  Said Abou-Hallawa  <[email protected]>
 
         SVGPathSegList.insertItemBefore() should fail if the newItem belongs to an animating animPathSegList

Modified: releases/WebKitGTK/webkit-2.24/Source/WebCore/html/canvas/WebGLBuffer.cpp (242871 => 242872)


--- releases/WebKitGTK/webkit-2.24/Source/WebCore/html/canvas/WebGLBuffer.cpp	2019-03-13 09:25:19 UTC (rev 242871)
+++ releases/WebKitGTK/webkit-2.24/Source/WebCore/html/canvas/WebGLBuffer.cpp	2019-03-13 09:25:24 UTC (rev 242872)
@@ -62,6 +62,8 @@
 
     switch (m_target) {
     case GraphicsContext3D::ELEMENT_ARRAY_BUFFER:
+        if (byteLength > std::numeric_limits<unsigned>::max())
+            return false;
         m_byteLength = byteLength;
         clearCachedMaxIndices();
         if (byteLength) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to