looks good

regards
-steve

On Mon, 2009-04-06 at 20:12 +0200, Jim Meyering wrote:
> From 3fa79efb8e67aa460c5a5d4e4c9132624df8a040 Mon Sep 17 00:00:00 2001
> From: Jim Meyering <[email protected]>
> Date: Mon, 6 Apr 2009 20:11:37 +0200
> Subject: [PATCH] sq.h: const'ify, and avoid NULL-deref
> 
> * include/corosync/sq.h (sq_init): Avoid NULL-deref on malloc failure.
> ---
>  include/corosync/sq.h |   27 +++++++++++++++------------
>  1 files changed, 15 insertions(+), 12 deletions(-)
> 
> diff --git a/include/corosync/sq.h b/include/corosync/sq.h
> index ac65f09..03f67c8 100644
> --- a/include/corosync/sq.h
> +++ b/include/corosync/sq.h
> @@ -6,7 +6,7 @@
>   * Author: Steven Dake ([email protected])
>   *
>   * This software licensed under BSD license, the text of which follows:
> - * 
> + *
>   * Redistribution and use in source and binary forms, with or without
>   * modification, are permitted provided that the following conditions are 
> met:
>   *
> @@ -101,13 +101,16 @@ static inline int sq_init (
>       sq->item_count = item_count;
>       sq->pos_max = 0;
> 
> -     sq->items = (void *)malloc (item_count * size_per_item);
> -     if (sq->items == 0) {
> +     sq->items = malloc (item_count * size_per_item);
> +     if (sq->items == NULL) {
>               return (-ENOMEM);
>       }
>       memset (sq->items, 0, item_count * size_per_item);
> 
> -     sq->items_inuse = (void *)malloc (item_count * sizeof (unsigned int));
> +     if ((sq->items_inuse = malloc (item_count * sizeof (unsigned int)))
> +         != NULL) {
> +             return (-ENOMEM);
> +     }
>       memset (sq->items_inuse, 0, item_count * sizeof (unsigned int));
>       return (0);
>  }
> @@ -122,7 +125,7 @@ static inline void sq_reinit (struct sq *sq, unsigned int 
> head_seqid)
>       memset (sq->items_inuse, 0, sq->item_count * sizeof (unsigned int));
>  }
> 
> -static inline void sq_assert (struct sq *sq, unsigned int pos)
> +static inline void sq_assert (const struct sq *sq, unsigned int pos)
>  {
>       unsigned int i;
> 
> @@ -132,7 +135,7 @@ static inline void sq_assert (struct sq *sq, unsigned int 
> pos)
>               assert (sq->items_inuse[i] == 0);
>       }
>  }
> -static inline void sq_copy (struct sq *sq_dest, struct sq *sq_src)
> +static inline void sq_copy (struct sq *sq_dest, const struct sq *sq_src)
>  {
>       sq_assert (sq_src, 20);
>       sq_dest->head = sq_src->head;
> @@ -179,19 +182,19 @@ static inline void *sq_item_add (
>  }
> 
>  static inline unsigned int sq_item_inuse (
> -     struct sq *sq,
> +     const struct sq *sq,
>       unsigned int seq_id) {
> 
>       unsigned int sq_position;
> 
>       /*
> -      * We need to say that the seqid is in use if it shouldn't 
> +      * We need to say that the seqid is in use if it shouldn't
>        * be here in the first place.
>        * To keep old messages from being inserted.
>        */
>  #ifdef COMPILE_OUT
>       if (seq_id < sq->head_seqid) {
> -             fprintf(stderr, "sq_item_inuse: seqid %d, head %d\n", 
> +             fprintf(stderr, "sq_item_inuse: seqid %d, head %d\n",
>                                               seq_id, sq->head_seqid);
>               return 1;
>       }
> @@ -201,13 +204,13 @@ static inline unsigned int sq_item_inuse (
>  }
> 
>  static inline unsigned int sq_size_get (
> -     struct sq *sq)
> +     const struct sq *sq)
>  {
>       return sq->size;
>  }
> 
>  static inline unsigned int sq_in_range (
> -     struct sq *sq,
> +     const struct sq *sq,
>       unsigned int seq_id)
>  {
>       int res = 1;
> @@ -236,7 +239,7 @@ static inline unsigned int sq_in_range (
>  }
> 
>  static inline unsigned int sq_item_get (
> -     struct sq *sq,
> +     const struct sq *sq,
>       unsigned int seq_id,
>       void **sq_item_out)
>  {

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to