From 17bab8c3fe25607758ad8318908ce200f6c909b5 Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Sun, 25 Jun 2006 09:38:40 +0000 Subject: [PATCH] Moved some free() calls that coverity correctly complains about. --- src/interfaces/ecpg/ChangeLog | 4 ++++ src/interfaces/ecpg/ecpglib/descriptor.c | 4 ++-- src/interfaces/ecpg/ecpglib/execute.c | 18 ++++++++++++------ src/interfaces/ecpg/test/test_init.pgc | 2 +- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 9ddb041087..5477c74652 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -2026,5 +2026,9 @@ we Jun 21 13:37:00 CEST 2006 - Added some more coverity report patches send in by Martijn van Oosterhout . + +Su Jun 25 11:27:46 CEST 2006 + + - Moved some free() calls that coverity correctly complains about. - Set ecpg library version to 5.2. - Set ecpg version to 4.2.1. diff --git a/src/interfaces/ecpg/ecpglib/descriptor.c b/src/interfaces/ecpg/ecpglib/descriptor.c index 19fd0173a3..9a3086bdda 100644 --- a/src/interfaces/ecpg/ecpglib/descriptor.c +++ b/src/interfaces/ecpg/ecpglib/descriptor.c @@ -1,6 +1,6 @@ /* dynamic SQL support routines * - * $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.15 2006/06/21 10:24:40 meskes Exp $ + * $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/descriptor.c,v 1.16 2006/06/25 09:38:39 meskes Exp $ */ #define POSTGRES_ECPG_INTERNAL @@ -349,7 +349,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...) return false; } /* allocate storage if needed */ - if (arrsize == 0 && var != NULL && *(void **) var == NULL) + if (arrsize == 0 && *(void **) var == NULL) { void *mem = (void *) ECPGalloc(offset * ntuples, lineno); if (!mem) diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c index fc2af97547..4c43195b94 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.48 2006/06/21 11:38:07 meskes Exp $ */ +/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/execute.c,v 1.49 2006/06/25 09:38:39 meskes Exp $ */ /* * The aim is to get a simpler inteface to the database routines. @@ -896,7 +896,7 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia if (!(mallocedval = ECPGrealloc(mallocedval, strlen(mallocedval) + slen + sizeof("array [] "), lineno))) { PGTYPESnumeric_free(nval); - free(str); + ECPGfree(str); return false; } @@ -905,8 +905,9 @@ 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); } - PGTYPESnumeric_free(nval); strcpy(mallocedval + strlen(mallocedval) - 1, "]"); } else @@ -929,12 +930,12 @@ 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; *malloced_p = true; - PGTYPESnumeric_free(nval); - free(str); } break; @@ -964,6 +965,7 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia strcpy(mallocedval + strlen(mallocedval), "interval "); strncpy(mallocedval + strlen(mallocedval), str, slen + 1); strcpy(mallocedval + strlen(mallocedval), ","); + ECPGfree(str); } strcpy(mallocedval + strlen(mallocedval) - 1, "]"); } @@ -983,11 +985,11 @@ ECPGstore_input(const int lineno, const bool force_indicator, const struct varia strcpy(mallocedval, "interval "); /* also copy trailing '\0' */ strncpy(mallocedval + strlen(mallocedval), str, slen + 1); + ECPGfree(str); } *tobeinserted_p = mallocedval; *malloced_p = true; - ECPGfree(str); } break; @@ -1163,6 +1165,7 @@ ECPGexecute(struct statement * stmt) if (desc == NULL) { ECPGraise(stmt->lineno, ECPG_UNKNOWN_DESCRIPTOR, ECPG_SQLSTATE_INVALID_SQL_DESCRIPTOR_NAME, var->pointer); + ECPGfree(copiedquery); return false; } @@ -1194,7 +1197,10 @@ ECPGexecute(struct statement * stmt) desc_inlist.ind_offset = 0; } if (!ECPGstore_input(stmt->lineno, stmt->force_indicator, &desc_inlist, &tobeinserted, &malloced)) + { + ECPGfree(copiedquery); return false; + } break; } diff --git a/src/interfaces/ecpg/test/test_init.pgc b/src/interfaces/ecpg/test/test_init.pgc index 29b14b20bd..2248636218 100644 --- a/src/interfaces/ecpg/test/test_init.pgc +++ b/src/interfaces/ecpg/test/test_init.pgc @@ -23,7 +23,7 @@ namespace N #endif int main(void) -{ struct sa x,*y; +{ struct sa x,*y=&x; exec sql begin declare section; int a=(int)2; int b=2+2; -- 2.40.0