aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/libpq/fe-auth.c
diff options
context:
space:
mode:
authorMarc G. Fournier <scrappy@hub.org>1996-07-27 02:27:55 +0000
committerMarc G. Fournier <scrappy@hub.org>1996-07-27 02:27:55 +0000
commitc13ef1afed3c5c4d63909b817cc2975b0937c5b1 (patch)
tree496fb005208e978e6face28dba9a07d1669c8b9b /src/interfaces/libpq/fe-auth.c
parent1a675fe5b2a4d1b990ce8fa4dd64367bb0abdea4 (diff)
downloadpostgresql-c13ef1afed3c5c4d63909b817cc2975b0937c5b1.tar.gz
postgresql-c13ef1afed3c5c4d63909b817cc2975b0937c5b1.zip
My patch to fe-connect.c introduced a new bug which is triggered only, if
Kerberos is being used (attempt to free static memory). The error was caused by a confusing doublespeak of fe_getauthname(): Returns a pointer to static memory, if you authenticate via Kerberos, a pointer to dynamic memory otherwise. Submitted by: Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
Diffstat (limited to 'src/interfaces/libpq/fe-auth.c')
-rw-r--r--src/interfaces/libpq/fe-auth.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c
index ebc85ba0f30..27ed3eee658 100644
--- a/src/interfaces/libpq/fe-auth.c
+++ b/src/interfaces/libpq/fe-auth.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.2 1996/07/23 03:35:11 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.3 1996/07/27 02:27:55 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -500,7 +500,7 @@ fe_getauthsvc(char* PQerrormsg)
}
/*
- * fe_getauthname -- returns a pointer to static space containing whatever
+ * fe_getauthname -- returns a pointer to dynamic space containing whatever
* name the user has authenticated to the system
* if there is an error, return the error message in PQerrormsg
*/
@@ -508,6 +508,7 @@ char*
fe_getauthname(char* PQerrormsg)
{
char *name = (char *) NULL;
+ char *authn = (char *) NULL;
MsgType authsvc;
authsvc = fe_getauthsvc(PQerrormsg);
@@ -525,11 +526,7 @@ fe_getauthname(char* PQerrormsg)
case STARTUP_MSG:
{
struct passwd *pw = getpwuid(geteuid());
- if (pw &&
- pw->pw_name &&
- (name = (char *) malloc(strlen(pw->pw_name) + 1))) {
- (void) strcpy(name, pw->pw_name);
- }
+ if (pw) name = pw->pw_name;
}
break;
default:
@@ -538,7 +535,10 @@ fe_getauthname(char* PQerrormsg)
authsvc);
break;
}
- return(name);
+
+ if(name && (authn = (char *) malloc(strlen(name) + 1)))
+ (void) strcpy(authn, name);
+ return(authn);
}