diff options
Diffstat (limited to 'src/debug.c')
| -rw-r--r-- | src/debug.c | 24 | 
1 files changed, 18 insertions, 6 deletions
diff --git a/src/debug.c b/src/debug.c index d529653a..979c6256 100644 --- a/src/debug.c +++ b/src/debug.c @@ -1,6 +1,6 @@  /* debug.c - helpful output in desperate situations     Copyright (C) 2000 Werner Koch (dd9jn) -   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 g10 Code GmbH +   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2009 g10 Code GmbH     This file is part of GPGME. @@ -197,6 +197,7 @@ void  _gpgme_debug_begin (void **line, int level, const char *format, ...)  {    va_list arg_ptr; +  int res;    debug_init ();    if (debug_level < level) @@ -207,8 +208,10 @@ _gpgme_debug_begin (void **line, int level, const char *format, ...)      }    va_start (arg_ptr, format); -  vasprintf ((char **) line, format, arg_ptr); +  res = vasprintf ((char **) line, format, arg_ptr);    va_end (arg_ptr); +  if (res < 0) +    *line = NULL;  } @@ -219,17 +222,26 @@ _gpgme_debug_add (void **line, const char *format, ...)    va_list arg_ptr;    char *toadd;    char *result; +  int res;    if (!*line)      return;    va_start (arg_ptr, format); -  vasprintf (&toadd, format, arg_ptr); +  res = vasprintf (&toadd, format, arg_ptr);    va_end (arg_ptr); -  asprintf (&result, "%s%s", *(char **) line, toadd); -  free (*line); +  if (res < 0) +    { +      free (*line); +      *line = NULL; +    } +  res = asprintf (&result, "%s%s", *(char **) line, toadd);    free (toadd); -  *line = result; +  free (*line); +  if (res < 0) +    *line = NULL; +  else +    *line = result;  }  | 
