[libvirt] [PATCH] sexpr_string: avoid leak on OOM error path

Daniel Veillard veillard at redhat.com
Thu Feb 4 17:18:21 UTC 2010


On Thu, Feb 04, 2010 at 05:55:58PM +0100, Jim Meyering wrote:
> 
> 
> >From cc06142a81dc1891dc75306b986ea331f5fd5368 Mon Sep 17 00:00:00 2001
> From: Jim Meyering <meyering at redhat.com>
> Date: Thu, 4 Feb 2010 17:55:15 +0100
> Subject: [PATCH] sexpr_string: avoid leak on OOM error path
> 
> * src/xen/sexpr.c (sexpr_string): Free sexpr buffer upon allocation
> failure.
> ---
>  src/xen/sexpr.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/src/xen/sexpr.c b/src/xen/sexpr.c
> index 085500d..669f8a2 100644
> --- a/src/xen/sexpr.c
> +++ b/src/xen/sexpr.c
> @@ -107,30 +107,31 @@ sexpr_nil(void)
>  struct sexpr *
>  sexpr_string(const char *str, ssize_t len)
>  {
>      struct sexpr *ret = sexpr_new();
> 
>      if (ret == NULL)
>          return ret;
>      ret->kind = SEXPR_VALUE;
>      if (len > 0) {
>          ret->u.value = strndup(str, len);
>      } else {
>          ret->u.value = strdup(str);
>      }
> 
>      if (ret->u.value == NULL) {
> +        VIR_FREE(ret);
>          return NULL;
>      }
> 
>      return ret;
>  }
> 
>  /**
>   * sexpr_cons:
>   * @car: the left operand
>   * @cdr: the right operand
>   *
>   * Implement the CONS operation assembling 2 existing S-Expressions.
>   * Note that in case of error the input data are not freed.
>   *
>   * Returns the resulting S-Expression pointer or NULL in case of error.

  ACK,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list