[Mesa-dev] [PATCH 09/11] mesa: add null checks in symbol_table.c

Ian Romanick idr at freedesktop.org
Fri Apr 4 13:24:40 PDT 2014


On 04/04/2014 03:28 AM, Juha-Pekka Heikkila wrote:
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
> ---
>  src/mesa/program/symbol_table.c | 33 ++++++++++++++++++++++++++++++---
>  1 file changed, 30 insertions(+), 3 deletions(-)
> 
> diff --git a/src/mesa/program/symbol_table.c b/src/mesa/program/symbol_table.c
> index 9462978..9c3556a 100644
> --- a/src/mesa/program/symbol_table.c
> +++ b/src/mesa/program/symbol_table.c
> @@ -172,9 +172,14 @@ _mesa_symbol_table_push_scope(struct _mesa_symbol_table *table)
>  {
>      struct scope_level *const scope = calloc(1, sizeof(*scope));
>      
> -    scope->next = table->current_scope;
> -    table->current_scope = scope;
> -    table->depth++;
> +    if (scope) {
> +       scope->next = table->current_scope;
> +       table->current_scope = scope;
> +       table->depth++;
> +    }
> +    else {
> +       _mesa_error_no_memory(__FUNCTION__);
> +    }

Previously, in a different patch, Matt (I think) I suggested using the idiom

   if (!scope) {
      _mesa_error_no_memory(__FUNCTION__);
      return;
   }

and leaving the rest of the code alone.  I agree.

>  }
>  
>  
> @@ -254,6 +259,12 @@ _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *table,
>  
>      if (hdr == NULL) {
>         hdr = calloc(1, sizeof(*hdr));
> +
> +       if (hdr == NULL) {
> +          _mesa_error_no_memory(__FUNCTION__);
> +          return -1;
> +       }
> +
>         hdr->name = strdup(name);

Doesn't the strdup also need a NULL check?

>  
>         hash_table_insert(table->ht, hdr, hdr->name);
> @@ -276,6 +287,12 @@ _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *table,
>         return -1;
>  
>      sym = calloc(1, sizeof(*sym));
> +

Extra blank line here.

> +    if (sym == NULL) {
> +       _mesa_error_no_memory(__FUNCTION__);
> +       return -1;
> +    }
> +
>      sym->next_with_same_name = hdr->symbols;
>      sym->next_with_same_scope = table->current_scope->symbols;
>      sym->hdr = hdr;
> @@ -311,6 +328,11 @@ _mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table *table,
>  
>      if (hdr == NULL) {
>          hdr = calloc(1, sizeof(*hdr));
> +        if (hdr == NULL) {
> +           _mesa_error_no_memory(__FUNCTION__);
> +           return -1;
> +        }
> +
>          hdr->name = strdup(name);
>  
>          hash_table_insert(table->ht, hdr, hdr->name);
> @@ -340,6 +362,11 @@ _mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table *table,
>      }
>  
>      sym = calloc(1, sizeof(*sym));
> +    if (sym == NULL) {
> +       _mesa_error_no_memory(__FUNCTION__);
> +       return -1;
> +    }
> +
>      sym->next_with_same_scope = top_scope->symbols;
>      sym->hdr = hdr;
>      sym->name_space = name_space;
> 



More information about the mesa-dev mailing list