summaryrefslogtreecommitdiffstats
path: root/src/appl
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2011-04-04 15:59:35 +0000
committerGreg Hudson <ghudson@mit.edu>2011-04-04 15:59:35 +0000
commite2c6d09c74ed23e72755d6bc94f3844b0bd3d1eb (patch)
tree7daca06e940bd9ec1fdd698fb56b43c6cf03f32f /src/appl
parent9880b7b620dcfa545f41a3046d09c1fc72583893 (diff)
downloadkrb5-e2c6d09c74ed23e72755d6bc94f3844b0bd3d1eb.tar.gz
krb5-e2c6d09c74ed23e72755d6bc94f3844b0bd3d1eb.tar.xz
krb5-e2c6d09c74ed23e72755d6bc94f3844b0bd3d1eb.zip
Add gss_userok and gss_pname_to_uid
Resurrect gss_userok and gss_pname_to_uid in the mechglue. Add krb5 mech implementations using krb5_kuserok and krb5_aname_to_localname, as well as mechanism-independent implementations based on name attributes. From r24710, r24715, r24717, r24731, r24732, r24733, r24734, r24735, r24747, r24816, and r24819 in users/lhoward/moonshot-mechglue-fixes, with minor edits. ticket: 6891 git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24836 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/appl')
-rw-r--r--src/appl/gss-sample/gss-server.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/appl/gss-sample/gss-server.c b/src/appl/gss-sample/gss-server.c
index e83326791..9b5cab29e 100644
--- a/src/appl/gss-sample/gss-server.c
+++ b/src/appl/gss-sample/gss-server.c
@@ -69,6 +69,8 @@
static OM_uint32
enumerateAttributes(OM_uint32 *minor, gss_name_t name, int noisy);
+static OM_uint32
+showLocalIdentity(OM_uint32 *minor, gss_name_t name);
static void
usage()
@@ -267,6 +269,7 @@ server_establish_context(int s, gss_cred_id_t server_creds,
return -1;
}
enumerateAttributes(&min_stat, client, TRUE);
+ showLocalIdentity(&min_stat, client);
maj_stat = gss_release_name(&min_stat, &client);
if (maj_stat != GSS_S_COMPLETE) {
display_status("releasing name", maj_stat, min_stat);
@@ -876,3 +879,18 @@ enumerateAttributes(OM_uint32 *minor,
return major;
}
+
+static OM_uint32
+showLocalIdentity(OM_uint32 *minor, gss_name_t name)
+{
+ OM_uint32 major;
+ uid_t uid;
+
+ major = gss_pname_to_uid(minor, name, GSS_C_NO_OID, &uid);
+ if (major == GSS_S_COMPLETE)
+ printf("UID: %lu\n", (unsigned long)uid);
+ else if (major != GSS_S_UNAVAILABLE)
+ display_status("gss_pname_to_uid", major, *minor);
+
+ return major;
+}