X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Fobjectlabel.c;h=78df96b9ba84ce70784d20085913b6a1e0dfd515;hb=5f8c6eabbeb698b6dc653eda9dcf01704e53ae58;hp=d9e42cfe4a6b02ae6f8d7ca1b3fd8c9e9a7c13eb;hpb=ecd155a428ff441071ace8d789e4b89740dd1b58;p=mesa.git diff --git a/src/mesa/main/objectlabel.c b/src/mesa/main/objectlabel.c index d9e42cfe4a6..78df96b9ba8 100644 --- a/src/mesa/main/objectlabel.c +++ b/src/mesa/main/objectlabel.c @@ -45,11 +45,8 @@ static void set_label(struct gl_context *ctx, char **labelPtr, const char *label, int length, const char *caller) { - if (*labelPtr) { - /* free old label string */ - free(*labelPtr); - *labelPtr = NULL; - } + free(*labelPtr); + *labelPtr = NULL; /* set new label string */ if (label) { @@ -61,7 +58,7 @@ set_label(struct gl_context *ctx, char **labelPtr, const char *label, MAX_LABEL_LENGTH); /* explicit length */ - *labelPtr = (char *) malloc(length+1); + *labelPtr = malloc(length+1); if (*labelPtr) { memcpy(*labelPtr, label, length); /* length is not required to include the null terminator so @@ -158,7 +155,7 @@ get_label_pointer(struct gl_context *ctx, GLenum identifier, GLuint name, break; case GL_VERTEX_ARRAY: { - struct gl_array_object *obj = _mesa_lookup_arrayobj(ctx, name); + struct gl_vertex_array_object *obj = _mesa_lookup_vao(ctx, name); if (obj) labelPtr = &obj->Label; } @@ -224,7 +221,7 @@ get_label_pointer(struct gl_context *ctx, GLenum identifier, GLuint name, } if (NULL == labelPtr) { - _mesa_error(ctx, GL_INVALID_VALUE, "glObjectLabel(name = %u)", name); + _mesa_error(ctx, GL_INVALID_VALUE, "%s(name = %u)", caller, name); } return labelPtr; @@ -256,6 +253,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 +291,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;