summaryrefslogtreecommitdiff
path: root/usr.bin/su/su.c
diff options
context:
space:
mode:
authorassar <assar@NetBSD.org>2000-08-09 02:15:27 +0000
committerassar <assar@NetBSD.org>2000-08-09 02:15:27 +0000
commitaa97fc7fa5da4d67a1a9e45882aa567b7f48cb3c (patch)
tree6b68452d687e32e27a34dde43ff825a985520299 /usr.bin/su/su.c
parentbf38a18dfc700f7f3ef4a67257b2eb80def85fef (diff)
set the correct owner on the krb5 ccache
Diffstat (limited to 'usr.bin/su/su.c')
-rw-r--r--usr.bin/su/su.c18
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)