From a574aa640b2aa966cf312c31721d4a5102a531f7 Mon Sep 17 00:00:00 2001 From: "Jacques A. Vidrine" Date: Wed, 9 Jan 2002 19:43:19 +0000 Subject: [PATCH] Don't use getlogin() to determine whether we are root. Patch by joda. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10808 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/su/ChangeLog | 4 ++++ appl/su/su.c | 13 +++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/appl/su/ChangeLog b/appl/su/ChangeLog index 30366bf70..b3a5c89e3 100644 --- a/appl/su/ChangeLog +++ b/appl/su/ChangeLog @@ -1,3 +1,7 @@ +2002-01-09 Jacques Vidrine + * su.c: Don't use getlogin() to determine whether we are root. + Patch by joda. + 2001-06-12 Assar Westerlund * su.c: check memory allocations. add some const diff --git a/appl/su/su.c b/appl/su/su.c index fd38a1c2d..c74de6b52 100644 --- a/appl/su/su.c +++ b/appl/su/su.c @@ -152,7 +152,11 @@ krb5_verify(const struct passwd *login_info, #ifdef KRB5 krb5_error_code ret; krb5_principal p; + char *login_name = NULL; +#if defined(HAVE_GETLOGIN) && !defined(POSIX_GETLOGIN) + login_name = getlogin(); +#endif ret = krb5_init_context (&context); if (ret) { #if 0 @@ -161,9 +165,11 @@ krb5_verify(const struct passwd *login_info, return 1; } + if (login_name == NULL || strcmp (login_name, "root") == 0) + login_name = login_info->pw_name; if (strcmp (su_info->pw_name, "root") == 0) ret = krb5_make_principal(context, &p, NULL, - login_info->pw_name, + login_name, kerberos_instance, NULL); else @@ -282,7 +288,6 @@ main(int argc, char **argv) int i, optind = 0; char *su_user; struct passwd *su_info; - char *login_user = NULL; struct passwd *login_info; struct passwd *pwd; @@ -325,10 +330,6 @@ main(int argc, char **argv) if (su_info == NULL) errx (1, "malloc: out of memory"); -#if defined(HAVE_GETLOGIN) && !defined(POSIX_GETLOGIN) - login_user = getlogin(); -#endif - if(login_user == NULL || (pwd = getpwnam(login_user)) == NULL) pwd = getpwuid(getuid()); if(pwd == NULL) errx(1, "who are you?");