simplify error handling
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14911 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -36,6 +36,14 @@ RCSID("$Id$");
|
|||||||
|
|
||||||
#include "krb5-v4compat.h"
|
#include "krb5-v4compat.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define RCHECK(r,func,label) \
|
||||||
|
do { (r) = func ; if (r) goto label; } while(0);
|
||||||
|
|
||||||
|
|
||||||
/* include this here, to avoid dependencies on libkrb */
|
/* include this here, to avoid dependencies on libkrb */
|
||||||
|
|
||||||
static const int _tkt_lifetimes[TKTLIFENUMFIXED] = {
|
static const int _tkt_lifetimes[TKTLIFENUMFIXED] = {
|
||||||
@@ -237,38 +245,22 @@ _krb5_krb_tf_setup(krb5_context context,
|
|||||||
krb5_clear_error_string(context);
|
krb5_clear_error_string(context);
|
||||||
|
|
||||||
if (!append) {
|
if (!append) {
|
||||||
ret = krb5_store_stringz(sp, v4creds->pname);
|
RCHECK(ret, krb5_store_stringz(sp, v4creds->pname), error);
|
||||||
if (ret < 0)
|
RCHECK(ret, krb5_store_stringz(sp, v4creds->pinst), error);
|
||||||
goto error;
|
|
||||||
ret = krb5_store_stringz(sp, v4creds->pinst);
|
|
||||||
if (ret < 0)
|
|
||||||
goto error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* cred */
|
/* cred */
|
||||||
ret = krb5_store_stringz(sp, v4creds->service);
|
RCHECK(ret, krb5_store_stringz(sp, v4creds->service), error);
|
||||||
if (ret < 0)
|
RCHECK(ret, krb5_store_stringz(sp, v4creds->instance), error);
|
||||||
goto error;
|
RCHECK(ret, krb5_store_stringz(sp, v4creds->realm), error);
|
||||||
ret = krb5_store_stringz(sp, v4creds->instance);
|
|
||||||
if (ret < 0)
|
|
||||||
goto error;
|
|
||||||
ret = krb5_store_stringz(sp, v4creds->realm);
|
|
||||||
if (ret < 0)
|
|
||||||
goto error;
|
|
||||||
ret = krb5_storage_write(sp, v4creds->session, 8);
|
ret = krb5_storage_write(sp, v4creds->session, 8);
|
||||||
if (ret != 8) {
|
if (ret != 8) {
|
||||||
ret = KRB5_CC_IO;
|
ret = KRB5_CC_IO;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
ret = krb5_store_int32(sp, v4creds->lifetime);
|
RCHECK(ret, krb5_store_int32(sp, v4creds->lifetime), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_store_int32(sp, v4creds->kvno), error);
|
||||||
goto error;
|
RCHECK(ret, krb5_store_int32(sp, v4creds->ticket_st.length), error);
|
||||||
ret = krb5_store_int32(sp, v4creds->kvno);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
ret = krb5_store_int32(sp, v4creds->ticket_st.length);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_storage_write(sp, v4creds->ticket_st.dat,
|
ret = krb5_storage_write(sp, v4creds->ticket_st.dat,
|
||||||
v4creds->ticket_st.length);
|
v4creds->ticket_st.length);
|
||||||
@@ -276,9 +268,7 @@ _krb5_krb_tf_setup(krb5_context context,
|
|||||||
ret = KRB5_CC_IO;
|
ret = KRB5_CC_IO;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
ret = krb5_store_int32(sp, v4creds->issue_date);
|
RCHECK(ret, krb5_store_int32(sp, v4creds->issue_date), error);
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = write_v4_cc(context, tkfile, sp, append);
|
ret = write_v4_cc(context, tkfile, sp, append);
|
||||||
|
|
||||||
@@ -395,18 +385,13 @@ put_nir(krb5_storage *sp, const char *name,
|
|||||||
{
|
{
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
|
|
||||||
ret = krb5_store_stringz(sp, name);
|
RCHECK(ret, krb5_store_stringz(sp, name), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_store_stringz(sp, instance), error);
|
||||||
return ret;
|
|
||||||
ret = krb5_store_stringz(sp, instance);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
if (realm) {
|
if (realm) {
|
||||||
ret = krb5_store_stringz(sp, realm);
|
RCHECK(ret, krb5_store_stringz(sp, realm), error);
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
return 0;
|
error:
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -440,20 +425,9 @@ _krb5_krb_create_ticket(krb5_context context,
|
|||||||
}
|
}
|
||||||
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
||||||
|
|
||||||
/* flags */
|
RCHECK(ret, krb5_store_int8(sp, flags), error);
|
||||||
ret = krb5_store_int8(sp, flags);
|
RCHECK(ret, put_nir(sp, pname, pinstance, prealm), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_store_int32(sp, ntohl(paddress)), error);
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* client nir */
|
|
||||||
ret = put_nir(sp, pname, pinstance, prealm);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* address */
|
|
||||||
ret = krb5_store_int32(sp, ntohl(paddress));
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* session key */
|
/* session key */
|
||||||
ret = krb5_storage_write(sp,
|
ret = krb5_storage_write(sp,
|
||||||
@@ -464,20 +438,9 @@ _krb5_krb_create_ticket(krb5_context context,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* life time */
|
RCHECK(ret, krb5_store_int8(sp, life), error);
|
||||||
ret = krb5_store_int8(sp, life);
|
RCHECK(ret, krb5_store_int32(sp, life_sec), error);
|
||||||
if (ret)
|
RCHECK(ret, put_nir(sp, sname, sinstance, NULL), error);
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* issue time */
|
|
||||||
ret = krb5_store_int32(sp, life_sec);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* service nir */
|
|
||||||
ret = put_nir(sp, sname, sinstance, NULL);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = storage_to_etext(context, sp, key, enc_data);
|
ret = storage_to_etext(context, sp, key, enc_data);
|
||||||
|
|
||||||
@@ -527,34 +490,16 @@ _krb5_krb_create_ciph(krb5_context context,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = put_nir(sp, service, instance, realm);
|
RCHECK(ret, put_nir(sp, service, instance, realm), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_store_int8(sp, life), error);
|
||||||
goto error;
|
RCHECK(ret, krb5_store_int8(sp, kvno), error);
|
||||||
|
RCHECK(ret, krb5_store_int8(sp, ticket->length), error);
|
||||||
/* life time */
|
|
||||||
ret = krb5_store_int8(sp, life);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* kvno */
|
|
||||||
ret = krb5_store_int8(sp, kvno);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* ticket */
|
|
||||||
ret = krb5_store_int8(sp, ticket->length);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
ret = krb5_storage_write(sp, ticket->data, ticket->length);
|
ret = krb5_storage_write(sp, ticket->data, ticket->length);
|
||||||
if (ret != ticket->length) {
|
if (ret != ticket->length) {
|
||||||
ret = EINVAL;
|
ret = EINVAL;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
RCHECK(ret, krb5_store_int32(sp, kdc_time), error);
|
||||||
/* kdc time */
|
|
||||||
ret = krb5_store_int32(sp, kdc_time);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = storage_to_etext(context, sp, key, enc_data);
|
ret = storage_to_etext(context, sp, key, enc_data);
|
||||||
|
|
||||||
@@ -594,37 +539,14 @@ _krb5_krb_create_auth_reply(krb5_context context,
|
|||||||
}
|
}
|
||||||
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
||||||
|
|
||||||
ret = krb5_store_int8(sp, KRB_PROT_VERSION);
|
RCHECK(ret, krb5_store_int8(sp, KRB_PROT_VERSION), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_store_int8(sp, AUTH_MSG_KDC_REPLY), error);
|
||||||
goto error;
|
RCHECK(ret, put_nir(sp, pname, pinst, prealm), error);
|
||||||
|
RCHECK(ret, krb5_store_int32(sp, time_ws), error);
|
||||||
ret = krb5_store_int8(sp, AUTH_MSG_KDC_REPLY);
|
RCHECK(ret, krb5_store_int8(sp, n), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_store_int32(sp, x_date), error);
|
||||||
goto error;
|
RCHECK(ret, krb5_store_int8(sp, kvno), error);
|
||||||
|
RCHECK(ret, krb5_store_int16(sp, cipher->length), error);
|
||||||
ret = put_nir(sp, pname, pinst, prealm);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_store_int32(sp, time_ws);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_store_int8(sp, n);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_store_int32(sp, x_date);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_store_int8(sp, kvno);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_store_int16(sp, cipher->length);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
ret = krb5_storage_write(sp, cipher->data, cipher->length);
|
ret = krb5_storage_write(sp, cipher->data, cipher->length);
|
||||||
if (ret != cipher->length) {
|
if (ret != cipher->length) {
|
||||||
ret = EINVAL;
|
ret = EINVAL;
|
||||||
@@ -660,6 +582,11 @@ _krb5_krb_cr_err_reply(krb5_context context,
|
|||||||
|
|
||||||
krb5_data_zero(data);
|
krb5_data_zero(data);
|
||||||
|
|
||||||
|
if (name == NULL) name = "";
|
||||||
|
if (inst == NULL) inst = "";
|
||||||
|
if (realm == NULL) realm = "";
|
||||||
|
if (e_string == NULL) e_string = "";
|
||||||
|
|
||||||
sp = krb5_storage_emem();
|
sp = krb5_storage_emem();
|
||||||
if (sp == NULL) {
|
if (sp == NULL) {
|
||||||
krb5_set_error_string(context, "malloc: out of memory");
|
krb5_set_error_string(context, "malloc: out of memory");
|
||||||
@@ -667,36 +594,12 @@ _krb5_krb_cr_err_reply(krb5_context context,
|
|||||||
}
|
}
|
||||||
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
||||||
|
|
||||||
ret = krb5_store_int8(sp, KRB_PROT_VERSION);
|
RCHECK(ret, krb5_store_int8(sp, KRB_PROT_VERSION), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_store_int8(sp, AUTH_MSG_ERR_REPLY), error);
|
||||||
goto error;
|
RCHECK(ret, put_nir(sp, name, inst, realm), error);
|
||||||
|
RCHECK(ret, krb5_store_int32(sp, time_ws), error);
|
||||||
ret = krb5_store_int8(sp, AUTH_MSG_ERR_REPLY);
|
RCHECK(ret, krb5_store_int32(sp, e), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_store_stringz(sp, e_string), error);
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (name == NULL) name = "";
|
|
||||||
if (inst == NULL) inst = "";
|
|
||||||
if (realm == NULL) realm = "";
|
|
||||||
|
|
||||||
ret = put_nir(sp, name, inst, realm);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_store_int32(sp, time_ws);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_store_int32(sp, e);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (e_string == NULL)
|
|
||||||
e_string = "";
|
|
||||||
|
|
||||||
ret = krb5_store_stringz(sp, e_string);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_storage_to_data(sp, data);
|
ret = krb5_storage_to_data(sp, data);
|
||||||
|
|
||||||
@@ -728,27 +631,28 @@ get_v4_stringz(krb5_storage *sp, char **str, size_t max_len)
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static krb5_error_code KRB5_LIB_FUNCTION
|
krb5_error_code KRB5_LIB_FUNCTION
|
||||||
decomp_ticket(krb5_context context,
|
_krb5_krb_decomp_ticket(krb5_context context,
|
||||||
const krb5_data *enc_ticket,
|
const krb5_data *enc_ticket,
|
||||||
const krb5_keyblock *key,
|
const krb5_keyblock *key,
|
||||||
const char *local_realm,
|
const char *local_realm,
|
||||||
char **sname,
|
char **sname,
|
||||||
char **sinstance,
|
char **sinstance,
|
||||||
struct _krb5_krb_auth_data *ad)
|
struct _krb5_krb_auth_data *ad)
|
||||||
{
|
{
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
krb5_ssize_t size;
|
krb5_ssize_t size;
|
||||||
krb5_storage *sp;
|
krb5_storage *sp = NULL;
|
||||||
krb5_data ticket;
|
krb5_data ticket;
|
||||||
unsigned char des_key[8];
|
unsigned char des_key[8];
|
||||||
|
|
||||||
|
memset(ad, 0, sizeof(*ad));
|
||||||
|
krb5_data_zero(&ticket);
|
||||||
|
|
||||||
*sname = NULL;
|
*sname = NULL;
|
||||||
*sinstance = NULL;
|
*sinstance = NULL;
|
||||||
|
|
||||||
ret = decrypt_etext(context, key, enc_ticket, &ticket);
|
RCHECK(ret, decrypt_etext(context, key, enc_ticket, &ticket), error);
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
sp = krb5_storage_from_data(&ticket);
|
sp = krb5_storage_from_data(&ticket);
|
||||||
if (sp == NULL) {
|
if (sp == NULL) {
|
||||||
@@ -759,21 +663,32 @@ decomp_ticket(krb5_context context,
|
|||||||
|
|
||||||
krb5_storage_set_eof_code(sp, EINVAL); /* XXX */
|
krb5_storage_set_eof_code(sp, EINVAL); /* XXX */
|
||||||
|
|
||||||
ret = krb5_ret_int8(sp, &ad->k_flags);
|
RCHECK(ret, krb5_ret_int8(sp, &ad->k_flags), error);
|
||||||
if (ret)
|
RCHECK(ret, get_v4_stringz(sp, &ad->pname, ANAME_SZ), error);
|
||||||
|
RCHECK(ret, get_v4_stringz(sp, &ad->pinst, INST_SZ), error);
|
||||||
|
RCHECK(ret, get_v4_stringz(sp, &ad->prealm, REALM_SZ), error);
|
||||||
|
RCHECK(ret, krb5_ret_int32(sp, &ad->address), error);
|
||||||
|
|
||||||
|
size = krb5_storage_read(sp, des_key, sizeof(des_key));
|
||||||
|
if (size != sizeof(des_key)) {
|
||||||
|
ret = EINVAL; /* XXX */
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
/* XXX check lengths of principals */
|
RCHECK(ret, krb5_ret_int8(sp, &ad->life), error);
|
||||||
|
|
||||||
ret = get_v4_stringz(sp, &ad->pname, ANAME_SZ);
|
if (ad->k_flags & 1)
|
||||||
if (ret)
|
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_LE);
|
||||||
goto error;
|
else
|
||||||
|
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
||||||
|
|
||||||
ret = get_v4_stringz(sp, &ad->pinst, INST_SZ);
|
RCHECK(ret, krb5_ret_int32(sp, &ad->time_sec), error);
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = get_v4_stringz(sp, &ad->prealm, REALM_SZ);
|
RCHECK(ret, get_v4_stringz(sp, sname, ANAME_SZ), error);
|
||||||
|
RCHECK(ret, get_v4_stringz(sp, sinstance, INST_SZ), error);
|
||||||
|
|
||||||
|
ret = krb5_keyblock_init(context, ETYPE_DES_PCBC_NONE,
|
||||||
|
des_key, sizeof(des_key), &ad->session);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@@ -786,42 +701,10 @@ decomp_ticket(krb5_context context,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = krb5_ret_int32(sp, &ad->address);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
size = krb5_storage_read(sp, des_key, sizeof(des_key));
|
|
||||||
if (size != sizeof(des_key)) {
|
|
||||||
ret = EINVAL; /* XXX */
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = krb5_keyblock_init(context, ETYPE_DES_PCBC_NONE,
|
|
||||||
des_key, sizeof(des_key), &ad->session);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_ret_int8(sp, &ad->life);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (ad->k_flags & 1)
|
|
||||||
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_LE);
|
|
||||||
else
|
|
||||||
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
|
||||||
|
|
||||||
krb5_ret_int32(sp, &ad->time_sec);
|
|
||||||
|
|
||||||
ret = get_v4_stringz(sp, sname, ANAME_SZ);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = get_v4_stringz(sp, sinstance, INST_SZ);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
krb5_storage_free(sp);
|
memset(des_key, 0, sizeof(des_key));
|
||||||
|
if (sp)
|
||||||
|
krb5_storage_free(sp);
|
||||||
krb5_data_free(&ticket);
|
krb5_data_free(&ticket);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (*sname) {
|
if (*sname) {
|
||||||
@@ -909,25 +792,11 @@ _krb5_krb_rd_req(krb5_context context,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = krb5_ret_int8(sp, &s_kvno);
|
RCHECK(ret, krb5_ret_int8(sp, &s_kvno), error);
|
||||||
if (ret)
|
RCHECK(ret, get_v4_stringz(sp, &realm, REALM_SZ), error);
|
||||||
goto error;
|
RCHECK(ret, krb5_ret_int8(sp, &ticket_length), error);
|
||||||
|
RCHECK(ret, krb5_ret_int8(sp, &eaut_length), error);
|
||||||
ret = get_v4_stringz(sp, &realm, REALM_SZ);
|
RCHECK(ret, krb5_data_alloc(&ticket, ticket_length), error);
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_ret_int8(sp, &ticket_length);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_ret_int8(sp, &eaut_length);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_data_alloc(&ticket, ticket_length);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
size = krb5_storage_read(sp, ticket.data, ticket.length);
|
size = krb5_storage_read(sp, ticket.data, ticket.length);
|
||||||
if (size != ticket.length) {
|
if (size != ticket.length) {
|
||||||
@@ -936,14 +805,12 @@ _krb5_krb_rd_req(krb5_context context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Decrypt and take apart ticket */
|
/* Decrypt and take apart ticket */
|
||||||
ret = decomp_ticket(context, &ticket, key, local_realm,
|
ret = _krb5_krb_decomp_ticket(context, &ticket, key, local_realm,
|
||||||
&sname, &sinstance, ad);
|
&sname, &sinstance, ad);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
ret = krb5_data_alloc(&eaut, eaut_length);
|
RCHECK(ret, krb5_data_alloc(&eaut, eaut_length), error);
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
size = krb5_storage_read(sp, eaut.data, eaut.length);
|
size = krb5_storage_read(sp, eaut.data, eaut.length);
|
||||||
if (size != eaut.length) {
|
if (size != eaut.length) {
|
||||||
@@ -970,28 +837,13 @@ _krb5_krb_rd_req(krb5_context context,
|
|||||||
else
|
else
|
||||||
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
krb5_storage_set_byteorder(sp, KRB5_STORAGE_BYTEORDER_BE);
|
||||||
|
|
||||||
|
RCHECK(ret, get_v4_stringz(sp, &r_name, ANAME_SZ), error);
|
||||||
|
RCHECK(ret, get_v4_stringz(sp, &r_instance, INST_SZ), error);
|
||||||
|
RCHECK(ret, get_v4_stringz(sp, &r_realm, REALM_SZ), error);
|
||||||
|
|
||||||
ret = get_v4_stringz(sp, &r_name, ANAME_SZ);
|
RCHECK(ret, krb5_ret_int32(sp, &ad->checksum), error);
|
||||||
if (ret)
|
RCHECK(ret, krb5_ret_int8(sp, &time_5ms), error);
|
||||||
goto error;
|
RCHECK(ret, krb5_ret_int32(sp, &r_time_sec), error);
|
||||||
ret = get_v4_stringz(sp, &r_instance, INST_SZ);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
ret = get_v4_stringz(sp, &r_realm, REALM_SZ);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_ret_int32(sp, &ad->checksum);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_ret_int8(sp, &time_5ms);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
ret = krb5_ret_int32(sp, &r_time_sec);
|
|
||||||
if (ret)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (strcmp(ad->pname, r_name) != 0 ||
|
if (strcmp(ad->pname, r_name) != 0 ||
|
||||||
strcmp(ad->pinst, r_instance) != 0 ||
|
strcmp(ad->pinst, r_instance) != 0 ||
|
||||||
|
Reference in New Issue
Block a user