From 1b7f5168c5ebf232366f455a792c9d269308c9ba Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Sun, 8 Sep 2013 12:59:43 +0200 Subject: [PATCH] Return error if allocation of new element was not possible. Found by Coverity. --- src/interfaces/ecpg/pgtypeslib/numeric.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/interfaces/ecpg/pgtypeslib/numeric.c b/src/interfaces/ecpg/pgtypeslib/numeric.c index 93505eaab1..7ec252c445 100644 --- a/src/interfaces/ecpg/pgtypeslib/numeric.c +++ b/src/interfaces/ecpg/pgtypeslib/numeric.c @@ -402,14 +402,18 @@ PGTYPESnumeric_to_asc(numeric *num, int dscale) numeric *numcopy = PGTYPESnumeric_new(); char *s; - if (dscale < 0) - dscale = num->dscale; + if (numcopy == NULL) + return NULL; if (PGTYPESnumeric_copy(num, numcopy) < 0) { PGTYPESnumeric_free(numcopy); return NULL; } + + if (dscale < 0) + dscale = num->dscale; + /* get_str_from_var may change its argument */ s = get_str_from_var(numcopy, dscale); PGTYPESnumeric_free(numcopy); @@ -1493,6 +1497,9 @@ numericvar_to_double(numeric *var, double *dp) char *endptr; numeric *varcopy = PGTYPESnumeric_new(); + if (varcopy == NULL) + return -1; + if (PGTYPESnumeric_copy(var, varcopy) < 0) { PGTYPESnumeric_free(varcopy);