1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
/*
* compat_mit.c
*
* Kerberos compatibility functions for MIT Kerberos.
*/
#include "config.h"
#ifdef HAVE_ET_COM_ERR_H
# include <et/com_err.h>
#else
# include <com_err.h>
#endif
#include <errno.h>
#include <krb5.h>
#include <stdlib.h>
#include <string.h>
#include "pam_krb5.h"
void
pamk5_compat_free_data_contents(krb5_context c, krb5_data *data)
{
krb5_free_data_contents(c, data);
}
const char *
pamk5_compat_get_err_text(krb5_context c, krb5_error_code code)
{
return error_message(code);
}
krb5_error_code
pamk5_compat_set_realm(struct pam_args *args, const char *realm)
{
pamk5_compat_free_realm(args);
args->realm_data = malloc(sizeof(*args->realm_data));
if (args->realm_data == NULL)
return errno;
args->realm_data->data = strdup(realm);
if (args->realm_data->data == NULL) {
free(args->realm_data);
args->realm_data = NULL;
return errno;
}
args->realm_data->magic = KV5M_DATA;
args->realm_data->length = strlen(realm);
return 0;
}
void
pamk5_compat_free_realm(struct pam_args *args)
{
if (args->realm_data != NULL) {
if (args->realm_data->data != NULL)
free(args->realm_data->data);
free(args->realm_data);
}
}
|