On Sat, Jun 13, 2015 at 6:25 PM, Michael Meskes <mes...@postgresql.org> wrote:
> On Sat, Jun 13, 2015 at 12:02:40AM -0400, Tom Lane wrote:
>> But having said that, I would not be in a hurry to remove any existing
>> if-guards for the case.  For one thing, it makes the code look more
>> similar to backend code that uses palloc/pfree, where we do *not* allow
>> pfree(NULL).  There's also the point that changing longstanding code
>> creates back-patching hazards, so unless there's a clear gain it's best
>> not to.
>
> Makes sense, but there is no point in adding hos if-guards to old code that
> doesn't have it either,right?

In any case, whatever the final decision done here, I just wanted to
point out that there is still a leak in connect.c. Per se the attached
patch, that does not check for a NULL pointer before ecpg_free because
other code paths in the routine patched don't do so. So you get
something locally consistent ;)
-- 
Michael
diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c
index 55c5680..e45d17f 100644
--- a/src/interfaces/ecpg/ecpglib/connect.c
+++ b/src/interfaces/ecpg/ecpglib/connect.c
@@ -321,7 +321,10 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p
 	}
 
 	if ((this = (struct connection *) ecpg_alloc(sizeof(struct connection), lineno)) == NULL)
+	{
+		ecpg_free(dbname);
 		return false;
+	}
 
 	if (dbname != NULL)
 	{
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to