Commit 3704b995 authored by Marc G. Fournier's avatar Marc G. Fournier

- libpq calls "fe_getauthname()" two times in "fe-connect.c", but

  doesn't free the buffer allocated by this function.

- submitted by: Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
parent df1a06ed
......@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.2 1996/07/12 04:53:57 scrappy Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.3 1996/07/19 07:00:56 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -114,20 +114,23 @@ PQsetdb(char *pghost, char* pgport, char* pgoptions, char* pgtty, char* dbName)
} else
conn->pgoptions = strdup(pgoptions);
if (!dbName || dbName[0] == '\0') {
if (((tmp = dbName) && (dbName[0] != '\0')) ||
((tmp = getenv("PGDATABASE"))))
conn->dbName = strdup(tmp);
else {
char errorMessage[ERROR_MSG_LENGTH];
if (!(tmp = getenv("PGDATABASE")) &&
!(tmp = fe_getauthname(errorMessage))) {
if (tmp = fe_getauthname(errorMessage)) {
conn->dbName = strdup(tmp);
free(tmp);
}
else {
sprintf(conn->errorMessage,
"FATAL: PQsetdb: Unable to determine a database name!\n");
/* pqdebug("%s", conn->errorMessage); */
conn->dbName = NULL;
return conn;
}
conn->dbName = strdup(tmp);
} else
conn->dbName = strdup(dbName);
}
conn->status = connectDB(conn);
return conn;
}
......@@ -164,8 +167,9 @@ connectDB(PGconn *conn)
user = fe_getauthname(conn->errorMessage);
if (!user)
goto connect_errReturn;
strncpy(startup.database,conn->dbName,sizeof(startup.database));
strncpy(startup.user,user,sizeof(startup.user));
free(user);
strncpy(startup.database,conn->dbName,sizeof(startup.database));
strncpy(startup.tty,conn->pgtty,sizeof(startup.tty));
if (conn->pgoptions) {
strncpy(startup.options,conn->pgoptions, sizeof(startup.options));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment