From ea9ec780ed6353bb84c48ec49495d29173fd0eb1 Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Mon, 26 Jun 2006 09:20:09 +0000 Subject: [PATCH] Added some more coverity report patches send in by Joachim Wieland . --- src/interfaces/ecpg/ChangeLog | 5 +++++ src/interfaces/ecpg/compatlib/informix.c | 3 ++- src/interfaces/ecpg/ecpglib/execute.c | 20 ++++++++++---------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 5477c74652..29f41b9e46 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -2030,5 +2030,10 @@ we Jun 21 13:37:00 CEST 2006 Su Jun 25 11:27:46 CEST 2006 - Moved some free() calls that coverity correctly complains about. + +Mo Jun 26 11:05:25 CEST 2006 + + - Added some more coverity report patches send in by Joachim Wieland + . - Set ecpg library version to 5.2. - Set ecpg version to 4.2.1. diff --git a/src/interfaces/ecpg/compatlib/informix.c b/src/interfaces/ecpg/compatlib/informix.c index a9ec92448f..65da37dcde 100644 --- a/src/interfaces/ecpg/compatlib/informix.c +++ b/src/interfaces/ecpg/compatlib/informix.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/compatlib/informix.c,v 1.45 2006/06/25 01:45:32 momjian Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/compatlib/informix.c,v 1.46 2006/06/26 09:20:09 meskes Exp $ */ #include #include @@ -417,6 +417,7 @@ dectoint(decimal *np, int *ip) } ret = PGTYPESnumeric_to_int(nres, ip); + PGTYPESnumeric_free(nres); if (ret == PGTYPES_NUM_OVERFLOW) ret = ECPG_INFORMIX_NUM_OVERFLOW; diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index 4c43195b94..0ac6b90980 100644 --- a/src/interfaces/ecpg/ecpglib/execute.c +++ b/src/interfaces/ecpg/ecpglib/execute.c @@ -1,4 +1,4 @@ -/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.49 2006/06/25 09:38:39 meskes Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.50 2006/06/26 09:20:09 meskes Exp $ */ /* * The aim is to get a simpler inteface to the database routines. @@ -875,16 +875,16 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia case ECPGt_numeric: { char *str = NULL; - int slen; + int slen; numeric *nval = PGTYPESnumeric_new(); - if (!nval) - return false; - if (var->arrsize > 1) { for (element = 0; element < var->arrsize; element++, nval = PGTYPESnumeric_new()) { + if (!nval) + return false; + if (var->type == ECPGt_numeric) PGTYPESnumeric_copy((numeric *) ((var + var->offset * element)->value), nval); else @@ -892,10 +892,10 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia str = PGTYPESnumeric_to_asc(nval, nval->dscale); slen = strlen(str); + PGTYPESnumeric_free(nval); if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [] "), lineno))) { - PGTYPESnumeric_free(nval); ECPGfree(str); return false; } @@ -906,24 +906,25 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia strncpy(mallocedval + strlen(mallocedval), str, slen + 1); strcpy(mallocedval + strlen(mallocedval), ","); ECPGfree(str); - PGTYPESnumeric_free(nval); } strcpy(mallocedval + strlen(mallocedval) - 1, "]"); } else { + if (!nval) + return false; + if (var->type == ECPGt_numeric) PGTYPESnumeric_copy((numeric *) (var->value), nval); else PGTYPESnumeric_from_decimal((decimal *) (var->value), nval); str = PGTYPESnumeric_to_asc(nval, nval->dscale); - slen = strlen(str); + PGTYPESnumeric_free(nval); if (!(mallocedval = ECPGalloc(slen + 1, lineno))) { - PGTYPESnumeric_free(nval); free(str); return false; } @@ -931,7 +932,6 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia strncpy(mallocedval, str, slen); mallocedval[slen] = '\0'; ECPGfree(str); - PGTYPESnumeric_free(nval); } *tobeinserted_p = mallocedval; -- 2.40.0