From 8dd4d10d481ec1da568ab424e62a3e50c069baaf Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Thu, 8 Mar 2012 22:21:12 +0200
Subject: [PATCH] ecpg: Fix rare memory leaks

found by Coverity
---
 src/interfaces/ecpg/ecpglib/connect.c | 4 ++++
 src/interfaces/ecpg/ecpglib/execute.c | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c
index cf625f96a34..b54b1f55036 100644
--- a/src/interfaces/ecpg/ecpglib/connect.c
+++ b/src/interfaces/ecpg/ecpglib/connect.c
@@ -519,6 +519,10 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p
 			ecpg_free(realname);
 		if (dbname)
 			ecpg_free(dbname);
+		if (conn_keywords)
+			ecpg_free(conn_keywords);
+		if (conn_values)
+			ecpg_free(conn_values);
 		free(this);
 		return false;
 	}
diff --git a/src/interfaces/ecpg/ecpglib/execute.c b/src/interfaces/ecpg/ecpglib/execute.c
index 311bc5cbc50..50a2d95347e 100644
--- a/src/interfaces/ecpg/ecpglib/execute.c
+++ b/src/interfaces/ecpg/ecpglib/execute.c
@@ -1776,6 +1776,7 @@ ECPGdo(const int lineno, const int compat, const int force_indicator, const char
 		{
 			setlocale(LC_NUMERIC, oldlocale);
 			ecpg_free(oldlocale);
+			free_statement(stmt);
 			va_end(args);
 			return (false);
 		}
@@ -1807,6 +1808,7 @@ ECPGdo(const int lineno, const int compat, const int force_indicator, const char
 			ecpg_raise(lineno, ECPG_INVALID_STMT, ECPG_SQLSTATE_INVALID_SQL_STATEMENT_NAME, stmt->command);
 			setlocale(LC_NUMERIC, oldlocale);
 			ecpg_free(oldlocale);
+			free_statement(stmt);
 			va_end(args);
 			return (false);
 		}
-- 
GitLab