From 4887ee632d73586d85fba201da5eda6f90072b12 Mon Sep 17 00:00:00 2001 From: Theodore Tso Date: Tue, 25 Aug 1992 23:17:32 +0000 Subject: [PATCH] As modified by Prasad @ ISI; PA DATA restructuring... git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2370 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/krb5/asn.1/ktgrq2tgrq.c | 55 ++++++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/src/lib/krb5/asn.1/ktgrq2tgrq.c b/src/lib/krb5/asn.1/ktgrq2tgrq.c index 31e6a7b9a..47f74db5f 100644 --- a/src/lib/krb5/asn.1/ktgrq2tgrq.c +++ b/src/lib/krb5/asn.1/ktgrq2tgrq.c @@ -226,6 +226,59 @@ register int *error; return retval; } + +struct element_KRB5_7 *krb5_pa_data2element_KRB5_7(val, error) + krb5_pa_data **val; + int *error; +{ + register struct element_KRB5_7 *retval = 0, *rv1 = 0, *rv2; + register krb5_pa_data * const *temp; + register int i; + + + *error = 0; + + if (val == 0) + return 0; + + /* count elements */ + for (i = 0, temp = val; *temp; temp++,i++, rv1 = rv2) { + + rv2 = (struct element_KRB5_7 *) xmalloc(sizeof(*rv2)); + if (!rv2) { + if (retval) + free_KRB5_PA__DATA(retval); + *error = ENOMEM; + return(0); + } + if (rv1) + rv1->next = rv2; + xbzero((char *)rv2, sizeof (*rv2)); + if (!retval) + retval = rv2; + + rv2->PA__DATA = (struct type_KRB5_PA__DATA *) + xmalloc(sizeof(*(rv2->PA__DATA))); + if (!rv2->PA__DATA) { + errout: + if (retval) + free_KRB5_PA__DATA(retval); + *error = ENOMEM; + return(0); + } + rv2->PA__DATA->padata__type = val[i]->pa_type; + rv2->PA__DATA->pa__data = str2qb((char *)(val[i])->contents, + (val[i])->length, 1); + if (!rv2->PA__DATA->pa__data) { + goto errout; + } + } + if (retval == 0) + *error = ISODE_LOCAL_ERR_MISSING_PART; + return(retval); + +} + struct type_KRB5_KDC__REQ * krb5_kdc_req2KRB5_KDC__REQ(val, error) const register krb5_kdc_req *val; @@ -242,7 +295,7 @@ register int *error; retval->pvno = KRB5_PVNO; retval->msg__type = val->msg_type; if (val->padata) { - retval->padata = krb5_pa_data2KRB5_PA__DATA(val->padata, error); + retval->padata = krb5_pa_data2element_KRB5_7(val->padata, error); if (*error) { xfree(retval); return 0; -- 2.26.2