Ensure non-zero transform feedback buffers must only be bound with an offset and size of a multiple of four.

TRAC #22958

Signed-off-by: Geoff Lang
Signed-off-by: Shannon Woods
Author: Jamie Madill

git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2299 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 8e3f4a5..a9e56c0 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -8678,6 +8678,13 @@
             switch (target)
             {
               case GL_TRANSFORM_FEEDBACK_BUFFER:
+
+                // size and offset must be a multiple of 4
+                if (buffer != 0 && ((offset % 4) != 0 || (size % 4) != 0))
+                {
+                    return gl::error(GL_INVALID_VALUE);
+                }
+
                 context->bindIndexedTransformFeedbackBuffer(buffer, index, offset, size);
                 context->bindGenericTransformFeedbackBuffer(buffer);
                 break;