From: Michael Meskes Date: Mon, 19 Jun 2006 09:20:32 +0000 (+0000) Subject: Do not use already free'ed errmsg, bug found by Joachim Wieland X-Git-Tag: REL7_4_14~19 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9e6815ef0f07b50d7b524194e0d34ce9707d74fb;p=postgresql Do not use already free'ed errmsg, bug found by Joachim Wieland --- diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c index a41e70a4f1..9734d0f6d9 100644 --- a/src/interfaces/ecpg/ecpglib/connect.c +++ b/src/interfaces/ecpg/ecpglib/connect.c @@ -1,4 +1,4 @@ -/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.17.2.1 2003/11/24 13:11:27 petere Exp $ */ +/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.17.2.2 2006/06/19 09:20:32 meskes Exp $ */ #define POSTGRES_ECPG_INTERNAL #include "postgres_fe.h" @@ -386,10 +386,6 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p const char *errmsg = PQerrorMessage(this->connection); char *db = realname ? realname : ""; - ecpg_finish(this); -#ifdef ENABLE_THREAD_SAFETY - pthread_mutex_unlock(&connections_mutex); -#endif ECPGlog("connect: could not open database %s on %s port %s %s%s%s%s in line %d\n\t%s\n", db, host ? host : "", @@ -398,6 +394,11 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p user ? "for user " : "", user ? user : "", lineno, errmsg); + ecpg_finish(this); +#ifdef ENABLE_THREAD_SAFETY + pthread_mutex_unlock(&connections_mutex); +#endif + ECPGraise(lineno, ECPG_CONNECT, ECPG_SQLSTATE_SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION, db); if (host) ECPGfree(host);