mesa: Check for a negative "size" parameter in glCopyBufferSubData().
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 9 Jun 2012 05:12:23 +0000 (22:12 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 11 Jun 2012 20:27:36 +0000 (13:27 -0700)
From the GL_ARB_copy_buffer spec:
"An INVALID_VALUE error is generated if any of readoffset, writeoffset,
 or size are negative [...]"

Fixes oglconform's copybuffer/negative.CNNegativeValues test.

NOTE: This is a candidate for stable release branches.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/main/bufferobj.c

index 54156650974f317eb9f76e6925865f4f145d3f5c..846260d80fe763187a8234fbd210f6ffcea6fa84 100644 (file)
@@ -1360,6 +1360,12 @@ _mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget,
       return;
    }
 
+   if (size < 0) {
+      _mesa_error(ctx, GL_INVALID_VALUE,
+                  "glCopyBufferSubData(writeOffset = %d)", (int) size);
+      return;
+   }
+
    if (readOffset + size > src->Size) {
       _mesa_error(ctx, GL_INVALID_VALUE,
                   "glCopyBufferSubData(readOffset + size = %d)",