As modified by Prasad @ ISI; PA DATA restructuring...
authorTheodore Tso <tytso@mit.edu>
Tue, 25 Aug 1992 23:17:32 +0000 (23:17 +0000)
committerTheodore Tso <tytso@mit.edu>
Tue, 25 Aug 1992 23:17:32 +0000 (23:17 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2370 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/asn.1/ktgrq2tgrq.c

index 31e6a7b9af28c09437457dfc6b518d0b8089378b..47f74db5fa6459879e47e12cac168fb8d998fda2 100644 (file)
@@ -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;