[Mesa-dev] [PATCH 1/3] mesa: Add missing error checks in _mesa_ProgramBinary

Emil Velikov emil.l.velikov at gmail.com
Thu Jan 22 09:09:59 PST 2015


On 21/12/14 20:08, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
> 
Hi Ian,

Imho the series looks like a worthy candidate for 10.4 branch.
Do you have any objections if I scoop it up ?

-Emil

> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87516
> ---
>  src/mesa/main/shaderapi.c | 27 +++++++++++++++++++++++++--
>  1 file changed, 25 insertions(+), 2 deletions(-)
> 
> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
> index 6d831f7..108e3f5 100644
> --- a/src/mesa/main/shaderapi.c
> +++ b/src/mesa/main/shaderapi.c
> @@ -1723,8 +1723,31 @@ _mesa_ProgramBinary(GLuint program, GLenum binaryFormat,
>  
>     (void) binaryFormat;
>     (void) binary;
> -   (void) length;
> -   _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__);
> +
> +   /* Section 2.3.1 (Errors) of the OpenGL 4.5 spec says:
> +    *
> +    *     "If a negative number is provided where an argument of type sizei or
> +    *     sizeiptr is specified, an INVALID_VALUE error is generated."
> +    */
> +   if (length < 0) {
> +      _mesa_error(ctx, GL_INVALID_VALUE, "glProgramBinary(length < 0)");
> +      return;
> +   }
> +
> +   /* The ARB_get_program_binary spec says:
> +    *
> +    *     "<binaryFormat> and <binary> must be those returned by a previous
> +    *     call to GetProgramBinary, and <length> must be the length of the
> +    *     program binary as returned by GetProgramBinary or GetProgramiv with
> +    *     <pname> PROGRAM_BINARY_LENGTH. Loading the program binary will fail,
> +    *     setting the LINK_STATUS of <program> to FALSE, if these conditions
> +    *     are not met."
> +    *
> +    * Since any value of binaryFormat passed "is not one of those specified as
> +    * allowable for [this] command, an INVALID_ENUM error is generated."
> +    */
> +   shProg->LinkStatus = GL_FALSE;
> +   _mesa_error(ctx, GL_INVALID_ENUM, __FUNCTION__);
>  }
>  
>  
> 



More information about the mesa-dev mailing list