Fix for new authdata.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4330 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1998-01-21 00:46:00 +00:00
parent 8fd8b388f2
commit e51386b2bc
3 changed files with 34 additions and 12 deletions

View File

@@ -50,7 +50,7 @@ krb5_free_creds_contents (krb5_context context, krb5_creds *c)
krb5_free_keyblock_contents (context, &c->session);
krb5_data_free (&c->ticket);
krb5_data_free (&c->second_ticket);
krb5_data_free (&c->authdata);
free_AuthorizationData (&c->authdata);
krb5_free_addresses (context, &c->addresses);
return 0;
}
@@ -83,9 +83,7 @@ krb5_copy_creds_contents (krb5_context context,
incred->second_ticket.length);
if (ret)
goto fail;
ret = krb5_data_copy (&c->authdata,
incred->authdata.data,
incred->authdata.length);
ret = copy_AuthorizationData(&incred->authdata, &c->authdata);
if (ret)
goto fail;
ret = krb5_copy_addresses (context,

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -258,8 +258,8 @@ _krb5_extract_ticket(krb5_context context,
}
creds->flags.b = rep->part2.flags;
creds->authdata.length = 0;
creds->authdata.data = NULL;
creds->authdata.len = 0;
creds->authdata.val = NULL;
creds->session.keyvalue.length = 0;
creds->session.keyvalue.data = NULL;
creds->session.keytype = rep->part2.key.keytype;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -465,13 +465,37 @@ krb5_ret_addrs(krb5_storage *sp, krb5_addresses *adr)
}
krb5_error_code
krb5_store_authdata(krb5_storage *sp, krb5_data p)
krb5_store_authdata(krb5_storage *sp, krb5_authdata auth)
{
return krb5_store_data(sp, p);
krb5_error_code ret;
int i;
ret = krb5_store_int32(sp, auth.len);
if(ret) return ret;
for(i = 0; i < auth.len; i++){
ret = krb5_store_int16(sp, auth.val[i].ad_type);
if(ret) break;
ret = krb5_store_data(sp, auth.val[i].ad_data);
if(ret) break;
}
return 0;
}
krb5_error_code
krb5_ret_authdata(krb5_storage *sp, krb5_data *auth)
krb5_ret_authdata(krb5_storage *sp, krb5_authdata *auth)
{
return krb5_ret_data(sp, auth);
krb5_error_code ret;
int32_t tmp;
int16_t tmp2;
int i;
ret = krb5_ret_int32(sp, &tmp);
if(ret) return ret;
ALLOC_SEQ(auth, tmp);
for(i = 0; i < tmp; i++){
ret = krb5_ret_int16(sp, &tmp2);
if(ret) break;
auth->val[i].ad_type = tmp2;
ret = krb5_ret_data(sp, &auth->val[i].ad_data);
if(ret) break;
}
return ret;
}