[Mesa-dev] [PATCH v2] glsl: GLSL ES identifiers cannot exceed 1024 characters

Iago Toral itoral at igalia.com
Sun Jan 25 23:53:15 PST 2015


Ian, does this version get your R-b?

On Tue, 2015-01-20 at 17:07 +0100, Iago Toral Quiroga wrote:
> v2 (Ian Romanick)
> - Move the check to the lexer before rallocing a copy of the large string.
> 
> Fixes the following 2 dEQP tests:
> dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.max_length_vertex
> dEQP-GLES3.functional.shaders.keywords.invalid_identifiers.max_length_fragment
> ---
>  src/glsl/glsl_lexer.ll | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll
> index 57c46be..48ba463 100644
> --- a/src/glsl/glsl_lexer.ll
> +++ b/src/glsl/glsl_lexer.ll
> @@ -544,7 +544,13 @@ subroutine	KEYWORD(0, 300, 0, 0, SUBROUTINE);
>  [_a-zA-Z][_a-zA-Z0-9]*	{
>  			    struct _mesa_glsl_parse_state *state = yyextra;
>  			    void *ctx = state;	
> -			    yylval->identifier = ralloc_strdup(ctx, yytext);
> +			    if (state->es_shader && strlen(yytext) > 1024) {
> +			       _mesa_glsl_error(yylloc, state,
> +			                        "Identifier `%s' exceeds 1024 characters",
> +			                        yytext);
> +			    } else {
> +			      yylval->identifier = ralloc_strdup(ctx, yytext);
> +			    }
>  			    return classify_identifier(state, yytext);
>  			}
>  




More information about the mesa-dev mailing list