[Mesa-dev] [PATCH] mesa: add missing error checks in _mesa_GetObject[Ptr]Label()

Brian Paul brianp at vmware.com
Fri Sep 27 16:12:39 PDT 2013


Error checking bufSize isn't mentioned in the spec, but it is in the
man pages.  However, I believe the man page is incorrect.  Typically,
GL functions that take GLsizei parameters check that they're positive
or non-negative.  Negative values don't make sense here.

A spec bug has been filed with Khronos/ARB.

v2: check for negative values, not <= 0.
---
 src/mesa/main/objectlabel.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/mesa/main/objectlabel.c b/src/mesa/main/objectlabel.c
index bfe9ba2..e75fe3b 100644
--- a/src/mesa/main/objectlabel.c
+++ b/src/mesa/main/objectlabel.c
@@ -256,6 +256,12 @@ _mesa_GetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize,
    GET_CURRENT_CONTEXT(ctx);
    char **labelPtr;
 
+   if (bufSize < 0) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glGetObjectLabel(bufSize = %d)",
+                  bufSize);
+      return;
+   }
+
    labelPtr = get_label_pointer(ctx, identifier, name, "glGetObjectLabel");
    if (!labelPtr)
       return;
@@ -288,6 +294,12 @@ _mesa_GetObjectPtrLabel(const void *ptr, GLsizei bufSize, GLsizei *length,
    char **labelPtr;
    struct gl_sync_object *const syncObj = (struct gl_sync_object *) ptr;
 
+   if (bufSize < 0) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glGetObjectPtrLabel(bufSize = %d)",
+                  bufSize);
+      return;
+   }
+
    if (!_mesa_validate_sync(ctx, syncObj)) {
       _mesa_error(ctx, GL_INVALID_VALUE, "glGetObjectPtrLabel (not a valid sync object)");
       return;
-- 
1.7.10.4



More information about the mesa-dev mailing list