diff options
author | kwc@citi.umich.edu <kwc@citi.umich.edu> | 2006-07-03 18:34:10 -0400 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2006-07-04 10:27:15 +1000 |
commit | 3829bb90e764cd72c0009cb32a8b39d0fab89d81 (patch) | |
tree | dd2e3142db6b717466ff0bbc773dbc6a74b31e13 /utils/gssd/gss_util.c | |
parent | 119c3e9aafe84c0f7c2846c46ad5e6f5eeece0da (diff) | |
download | nfs-utils-3829bb90e764cd72c0009cb32a8b39d0fab89d81.tar.gz nfs-utils-3829bb90e764cd72c0009cb32a8b39d0fab89d81.tar.xz nfs-utils-3829bb90e764cd72c0009cb32a8b39d0fab89d81.zip |
Check that the gssapi library is usable early on.
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Do a call to determine mechanisms supported by the gssapi library early.
This allows us to discover early in case the gssapi library is somehow
misconfigured. We can bail out early and give a meaningful message
rather than getting errors on each attempt at a context negotiation.
Diffstat (limited to 'utils/gssd/gss_util.c')
-rw-r--r-- | utils/gssd/gss_util.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/utils/gssd/gss_util.c b/utils/gssd/gss_util.c index f62a87b..d316b4d 100644 --- a/utils/gssd/gss_util.c +++ b/utils/gssd/gss_util.c @@ -224,3 +224,28 @@ gssd_acquire_cred(char *server_name) return (maj_stat == GSS_S_COMPLETE); } + +int gssd_check_mechs(void) +{ + u_int32_t maj_stat, min_stat; + gss_OID_set supported_mechs = GSS_C_NO_OID_SET; + int retval = -1; + + maj_stat = gss_indicate_mechs(&min_stat, &supported_mechs); + if (maj_stat != GSS_S_COMPLETE) { + printerr(0, "Unable to obtain list of supported mechanisms. " + "Check that gss library is properly configured.\n"); + goto out; + } + if (supported_mechs == GSS_C_NO_OID_SET || + supported_mechs->count == 0) { + printerr(0, "Unable to obtain list of supported mechanisms. " + "Check that gss library is properly configured.\n"); + goto out; + } + maj_stat = gss_release_oid_set(&min_stat, &supported_mechs); + retval = 0; +out: + return retval; +} + |