mesa: add missing error checks in _mesa_GetObject[Ptr]Label()
authorBrian Paul <brianp@vmware.com>
Sat, 14 Sep 2013 15:59:18 +0000 (09:59 -0600)
committerBrian Paul <brianp@vmware.com>
Tue, 1 Oct 2013 16:10:01 +0000 (10:10 -0600)
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

index bfe9ba20b34aeff0e3d7068d2596d10386ebe8c5..e75fe3be26ca76a587af70291a8d476a172fbe73 100644 (file)
@@ -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;