On Tue, 2014-04-22 at 16:58 +0800, Chia-I Wu wrote: > Add validate_length and use it and log_msg directly. > > Signed-off-by: Chia-I Wu <o...@lunarg.com> > --- > src/mesa/main/errors.c | 46 ++++++++++++++++++++-------------------------- > 1 file changed, 20 insertions(+), 26 deletions(-) > > diff --git a/src/mesa/main/errors.c b/src/mesa/main/errors.c > index bf0886f..0aa9c8a 100644 > --- a/src/mesa/main/errors.c > +++ b/src/mesa/main/errors.c > @@ -724,33 +724,18 @@ error: > } > > > -/** > - * This is a generic message insert function. > - * Validation of source, type and severity parameters should be done > - * before calling this funtion. > - */ > -static void > -message_insert(GLenum source, GLenum type, GLuint id, > - GLenum severity, GLint length, const GLchar *buf, > - const char *callerstr) > +static GLboolean > +validate_length(struct gl_context *ctx, const char *callerstr, GLsizei > length) > { > - GET_CURRENT_CONTEXT(ctx); > - > - if (length < 0) > - length = strlen(buf); > - > if (length >= MAX_DEBUG_MESSAGE_LENGTH) { > _mesa_error(ctx, GL_INVALID_VALUE, > "%s(length=%d, which is not less than " > "GL_MAX_DEBUG_MESSAGE_LENGTH=%d)", callerstr, length, > MAX_DEBUG_MESSAGE_LENGTH); > - return; > + return GL_FALSE; > } > > - log_msg(ctx, > - gl_enum_to_debug_source(source), > - gl_enum_to_debug_type(type), id, > - gl_enum_to_debug_severity(severity), length, buf); > + return GL_TRUE; > } > > > @@ -765,8 +750,16 @@ _mesa_DebugMessageInsert(GLenum source, GLenum type, > GLuint id, > > if (!validate_params(ctx, INSERT, callerstr, source, type, severity)) > return; /* GL_INVALID_ENUM */ > + if (!validate_length(ctx, callerstr, length)) > + return; /* GL_INVALID_VALUE */ > > - message_insert(source, type, id, severity, length, buf, callerstr); > + if (length < 0) > + length = strlen(buf); > +
The validate call should be here i.e after checking buf length. "The error INVALID_VALUE will be generated if the number of characters in <buf>, excluding the null terminator when <length> is negative, is not less than the value of MAX_DEBUG_MESSAGE_LENGTH." > + log_msg(ctx, gl_enum_to_debug_source(source), > + gl_enum_to_debug_type(type), id, > + gl_enum_to_debug_severity(severity), > + length, buf); > } > > > @@ -916,12 +909,16 @@ _mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei > length, > return; > } > > + if (!validate_length(ctx, callerstr, length)) > + return; /* GL_INVALID_VALUE */ > + > if (length < 0) > length = strlen(message); As above the validate should be here > > - message_insert(source, GL_DEBUG_TYPE_PUSH_GROUP, id, > - GL_DEBUG_SEVERITY_NOTIFICATION, length, > - message, callerstr); > + log_msg(ctx, gl_enum_to_debug_source(source), > + MESA_DEBUG_TYPE_PUSH_GROUP, id, > + MESA_DEBUG_SEVERITY_NOTIFICATION, length, > + message); > > /* pop reuses the message details from push so we store this */ > emptySlot = debug_get_group_message(debug); > @@ -955,9 +952,6 @@ _mesa_PopDebugGroup(void) > debug_pop_group(debug); > > gdmessage = debug_get_group_message(debug); > - /* using log_msg() directly here as verification of parameters > - * already done in push > - */ > log_msg(ctx, gdmessage->source, > gl_enum_to_debug_type(GL_DEBUG_TYPE_POP_GROUP), > gdmessage->id, _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev