diff options
| author | assar <assar@NetBSD.org> | 2000-08-09 02:15:27 +0000 |
|---|---|---|
| committer | assar <assar@NetBSD.org> | 2000-08-09 02:15:27 +0000 |
| commit | aa97fc7fa5da4d67a1a9e45882aa567b7f48cb3c (patch) | |
| tree | 6b68452d687e32e27a34dde43ff825a985520299 /usr.bin/su/su.c | |
| parent | bf38a18dfc700f7f3ef4a67257b2eb80def85fef (diff) | |
set the correct owner on the krb5 ccache
Diffstat (limited to 'usr.bin/su/su.c')
| -rw-r--r-- | usr.bin/su/su.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/usr.bin/su/su.c b/usr.bin/su/su.c index bfa16f326dc..3e420c744e6 100644 --- a/usr.bin/su/su.c +++ b/usr.bin/su/su.c @@ -1,4 +1,4 @@ -/* $NetBSD: su.c,v 1.42 2000/07/13 08:37:10 assar Exp $ */ +/* $NetBSD: su.c,v 1.43 2000/08/09 02:15:27 assar Exp $ */ /* * Copyright (c) 1988 The Regents of the University of California. @@ -44,7 +44,7 @@ __COPYRIGHT( #if 0 static char sccsid[] = "@(#)su.c 8.3 (Berkeley) 4/2/94";*/ #else -__RCSID("$NetBSD: su.c,v 1.42 2000/07/13 08:37:10 assar Exp $"); +__RCSID("$NetBSD: su.c,v 1.43 2000/08/09 02:15:27 assar Exp $"); #endif #endif /* not lint */ @@ -463,6 +463,7 @@ kerberos5(username, user, uid) krb5_principal princ = NULL; krb5_ccache ccache, ccache2; char *cc_name; + const char *filename; ret = krb5_init_context(&context); if (ret) @@ -512,13 +513,22 @@ kerberos5(username, user, uid) goto fail; } + filename = krb5_cc_get_name(context, ccache2); asprintf(&cc_name, "%s:%s", krb5_cc_get_type(context, ccache2), - krb5_cc_get_name(context, ccache2)); + filename); + if (chown (filename, uid, -1) < 0) { + warn("chown %s", filename); + free(cc_name); + krb5_cc_destroy(context, ccache); + krb5_cc_destroy(context, ccache2); + goto fail; + } + setenv("KRB5CCNAME", cc_name, 1); free(cc_name); krb5_cc_close(context, ccache2); krb5_cc_destroy(context, ccache); - return 0; + return (0); fail: if (princ != NULL) |
