]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
have the function allocate space, and add a free function
authorMarc Horowitz <marc@mit.edu>
Wed, 5 Aug 1998 07:11:39 +0000 (07:11 +0000)
committerMarc Horowitz <marc@mit.edu>
Wed, 5 Aug 1998 07:11:39 +0000 (07:11 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/marc-3des@10777 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/crypto/keyed_checksum_types.c

index e0aa424b4d64c446c6c61f935b4ed12a6d80f613..f5a6a5d0640294b0101043b65f46a03f8cea99c8 100644 (file)
@@ -16,50 +16,54 @@ static int etype_match(e1, e2)
            break;
 
     return((i1 < krb5_enctypes_length) &&
-          (i2 < krb5_enctypes_length) ||
+          (i2 < krb5_enctypes_length) &&
           (krb5_enctypes_list[i1].enc == krb5_enctypes_list[i2].enc));
 }
 
 krb5_error_code
-krb5_c_num_keyed_checksum_types(context, enctype, count)
+krb5_c_keyed_checksum_types(context, enctype, count, cksumtypes)
      krb5_context context;
      krb5_enctype enctype;
      unsigned int *count;
+     krb5_cksumtype **cksumtypes;
 {
-    int i;
-    unsigned int c;
+    unsigned int i, c;
 
     c = 0;
-    for (i=0; i<krb5_cksumtypes_length; i++)
+    for (i=0; i<krb5_cksumtypes_length; i++) {
        if ((krb5_cksumtypes_list[i].keyhash &&
             etype_match(krb5_cksumtypes_list[i].keyed_etype, enctype)) ||
-           (krb5_cksumtypes_list[i].flags & KRB5_CKSUMFLAG_DERIVE))
+           (krb5_cksumtypes_list[i].flags & KRB5_CKSUMFLAG_DERIVE)) {
            c++;
+       }
+    }
 
     *count = c;
 
-    return(0);
-}
-
-krb5_error_code
-krb5_c_keyed_checksum_types(context, enctype, count, cksumtypes)
-     krb5_context context;
-     krb5_enctype enctype;
-     unsigned int count;
-     krb5_cksumtype *cksumtypes;
-{
-    int i;
-    unsigned int c;
+    if ((*cksumtypes = (krb5_cksumtype *) malloc(c*sizeof(krb5_cksumtype)))
+       == NULL)
+       return(ENOMEM);
 
     c = 0;
-    for (i=0; i<krb5_cksumtypes_length && c < count; i++) {
+    for (i=0; i<krb5_cksumtypes_length; i++) {
        if ((krb5_cksumtypes_list[i].keyhash &&
             etype_match(krb5_cksumtypes_list[i].keyed_etype, enctype)) ||
            (krb5_cksumtypes_list[i].flags & KRB5_CKSUMFLAG_DERIVE)) {
-           cksumtypes[c] = krb5_cksumtypes_list[i].ctype;
+           (*cksumtypes)[c] = krb5_cksumtypes_list[i].ctype;
            c++;
        }
     }
 
     return(0);
 }
+
+void
+krb5_free_cksumtypes(context, val)
+    krb5_context context;
+    krb5_cksumtype FAR * val;
+{
+    if (val)
+       krb5_xfree(val);
+    return;
+}
+