aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2006-06-26 09:20:09 +0000
committerMichael Meskes <meskes@postgresql.org>2006-06-26 09:20:09 +0000
commitea9ec780ed6353bb84c48ec49495d29173fd0eb1 (patch)
treecf2373cd6c9f525b5e26aaaa11c73ed2936ab26e /src
parentbc28f58b8fe9b25d9b15dd3abc00ea7b72a98909 (diff)
downloadpostgresql-ea9ec780ed6353bb84c48ec49495d29173fd0eb1.tar.gz
postgresql-ea9ec780ed6353bb84c48ec49495d29173fd0eb1.zip
Added some more coverity report patches send in by Joachim Wieland <joe@mcknight.de>.
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/ecpg/ChangeLog5
-rw-r--r--src/interfaces/ecpg/compatlib/informix.c3
-rw-r--r--src/interfaces/ecpg/ecpglib/execute.c20
3 files changed, 17 insertions, 11 deletions
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 5477c746520..29f41b9e463 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
+ <joe@mcknight.de>.
- 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 a9ec92448f3..65da37dcdee 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 <stdlib.h>
#include <string.h>
@@ -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 4c43195b942..0ac6b909807 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;