From e51386b2bca6aa319cf112c72de6c117119e65e0 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Wed, 21 Jan 1998 00:46:00 +0000 Subject: [PATCH] Fix for new authdata. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4330 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/creds.c | 6 ++---- lib/krb5/get_in_tkt.c | 6 +++--- lib/krb5/store.c | 34 +++++++++++++++++++++++++++++----- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/lib/krb5/creds.c b/lib/krb5/creds.c index 620f7862a..d490e7547 100644 --- a/lib/krb5/creds.c +++ b/lib/krb5/creds.c @@ -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, diff --git a/lib/krb5/get_in_tkt.c b/lib/krb5/get_in_tkt.c index 0ba0cb9eb..c8aed71b4 100644 --- a/lib/krb5/get_in_tkt.c +++ b/lib/krb5/get_in_tkt.c @@ -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; diff --git a/lib/krb5/store.c b/lib/krb5/store.c index 34675d4c6..6f74d27f8 100644 --- a/lib/krb5/store.c +++ b/lib/krb5/store.c @@ -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; }