- 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>
This commit is contained in:
parent
df1a06ed37
commit
3704b99522
@ -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') {
|
||||
char errorMessage[ERROR_MSG_LENGTH];
|
||||
if (!(tmp = getenv("PGDATABASE")) &&
|
||||
!(tmp = fe_getauthname(errorMessage))) {
|
||||
sprintf(conn->errorMessage,
|
||||
"FATAL: PQsetdb: Unable to determine a database name!\n");
|
||||
/* pqdebug("%s", conn->errorMessage); */
|
||||
conn->dbName = NULL;
|
||||
return conn;
|
||||
}
|
||||
if (((tmp = dbName) && (dbName[0] != '\0')) ||
|
||||
((tmp = getenv("PGDATABASE"))))
|
||||
conn->dbName = strdup(tmp);
|
||||
} else
|
||||
conn->dbName = strdup(dbName);
|
||||
|
||||
else {
|
||||
char errorMessage[ERROR_MSG_LENGTH];
|
||||
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->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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user