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>
This commit is contained in:
parent
1a675fe5b2
commit
c13ef1afed
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user