[Mesa-dev] [PATCH] glsl/glcpp: fix SIGSEGV when checking error condition for macro redefinition

Anuj Phogat anuj.phogat at gmail.com
Thu Jul 23 09:22:56 PDT 2015


On Thu, Jul 23, 2015 at 2:19 AM, Samuel Iglesias Gonsalvez
<siglesias at igalia.com> wrote:
> Commit a6e9cd14c does not take into account than node_{a,b}->next could be NULL
> in some circumstances, such as in a shader containing this code:
>
>   #define A 1 /* comment */
>   #define A 1 /* comment */
>
> This patch fixes the segmentation fault for cases like that.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91290
> Signed-off-by: Samuel Iglesias Gonsalvez <siglesias at igalia.com>
> Cc: Anuj Phogat <anuj.phogat at gmail.com>
> Cc: Carl Worth <cworth at cworth.org>
> ---
>  src/glsl/glcpp/glcpp-parse.y | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
> index 7ef4dfd..dd5ec2a 100644
> --- a/src/glsl/glcpp/glcpp-parse.y
> +++ b/src/glsl/glcpp/glcpp-parse.y
> @@ -1074,9 +1074,9 @@ _token_list_equal_ignoring_space (token_list_t *a, token_list_t *b)
>                  */
>                 if (node_a->token->type == SPACE
>                     && node_b->token->type == SPACE) {
> -                       while (node_a->token->type == SPACE)
> +                       while (node_a && node_a->token->type == SPACE)
>                                 node_a = node_a->next;
> -                       while (node_b->token->type == SPACE)
> +                       while (node_b && node_b->token->type == SPACE)
>                                 node_b = node_b->next;
>                         continue;
>                 }
> --
> 2.1.4
>

Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>


More information about the mesa-dev mailing list