Hi, I'd like to report a bug in the memory management of libecpg (PostgreSQL version 7.1.3).
The ECPGLog() call in ./src/interfaces/ecpg/lib/connect.c line 428 uses variables pointing to free()'ed storage (`realname', `host', `port', and `options', see patch below). regards, Sascha Demetrio diff -u connect.c.old connect.c --- connect.c.old Sat Sep 29 16:51:41 2001 +++ connect.c Sat Sep 29 16:53:03 2001 @@ -411,17 +411,6 @@ this->connection = PQsetdbLogin(host, port, options, NULL, realname, user, passwd); - if (host) - free(host); - if (port) - free(port); - if (options) - free(options); - if (realname) - free(realname); - if (dbname) - free(dbname); - if (PQstatus(this->connection) == CONNECTION_BAD) { ecpg_finish(this); @@ -433,8 +422,31 @@ user ? "for user " : "", user ? user : "", lineno); ECPGraise(lineno, ECPG_CONNECT, realname ? realname : "<DEFAULT>"); + + if (host) + free(host); + if (port) + free(port); + if (options) + free(options); + if (realname) + free(realname); + if (dbname) + free(dbname); + return false; } + + if (host) + free(host); + if (port) + free(port); + if (options) + free(options); + if (realname) + free(realname); + if (dbname) + free(dbname); this->committed = true; this->autocommit = autocommit; ---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly