/* -*- mode: c; indent-tabs-mode: nil -*- */
/*
*/
/*
* Copyright 1993 by OpenVision Technologies, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appears in all copies and
* that both that copyright notice and this permission notice appear in
* supporting documentation, and that the name of OpenVision not be used
* in advertising or publicity pertaining to distribution of the software
* without specific, written prior permission. OpenVision makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
* OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#include "gssapiP_krb5.h"
#include "com_err.h"
#include <syslog.h>
/* XXXX internationalization!! */
static inline int
{
if (a < b)
return -1;
else if (a == b)
return 0;
else
return 1;
}
static inline void
free_string (char *s)
{
free(s);
}
#include "error_map.h"
#include <stdio.h>
/*
* AKA krb5_gss_get_error_message. See #define in gssapiP_krb5.h.
*/
{
#ifdef DEBUG
(void *) p);
#endif
if (p) {
char **v = gsserrmap_find(p, minor_code);
if (v) {
msg = *v;
#ifdef DEBUG
#endif
}
}
#ifdef DEBUG
#endif
return msg;
}
{
gsserrmap *p;
int ret;
#ifdef DEBUG
#endif
if (!p) {
p = malloc(sizeof(*p));
if (p == NULL) {
ret = 1;
goto fail;
}
if (gsserrmap_init(p) != 0) {
free(p);
p = NULL;
ret = 1;
goto fail;
}
if (k5_setspecific(K5_KEY_GSS_KRB5_ERROR_MESSAGE, p) != 0) {
free(p);
p = NULL;
ret = 1;
goto fail;
}
}
/* Solaris Kerberos */
if (ret) {
free(p);
p = NULL;
}
fail:
#ifdef DEBUG
#endif
return ret;
}
{
if (s) {
if (save_error_string_nocopy(minor_code, s) != 0)
free(s);
}
}
{
char *s;
int n;
if (n >= 0) {
if (save_error_string_nocopy(minor_code, s) != 0)
free(s);
}
}
{
char *s;
#ifdef DEBUG
(unsigned long) minor_code, (void *)ctx);
#endif
#ifdef DEBUG
(unsigned long) minor_code, (void *)ctx, s);
#endif
/* The get_error_message call above resets the error message in
ctx. Put it back, in case we make this call again *sigh*. */
}
void krb5_gss_delete_error_info(void *p)
{
}
/**/
int status_type;
{
status_string->length = 0;
if ((mech_type != GSS_C_NULL_OID) &&
*minor_status = 0;
return(GSS_S_BAD_MECH);
}
if (status_type == GSS_C_GSS_CODE) {
} else if (status_type == GSS_C_MECH_CODE) {
(void) gss_krb5int_initialize_library();
if (*message_context) {
return(GSS_S_FAILURE);
}
/* If this fails, there's not much we can do... */
/* Solaris Kerberos - cleaned-up/fixed the return checks/values here */
status_string)) {
*minor_status = ENOMEM;
return(GSS_S_FAILURE);
}
*minor_status = 0;
return(GSS_S_COMPLETE);
} else {
*minor_status = 0;
return(GSS_S_BAD_STATUS);
}
}
/*
* Solaris Kerberos
* Hack alert: workaround obfusicated func name issues for mech_spnego.so.
*/
int status_type;
{
}