* [krb5-libs/149] only generate requests that you can actually
authorMark Eichin <eichin@mit.edu>
Sat, 23 Nov 1996 22:37:33 +0000 (22:37 +0000)
committerMark Eichin <eichin@mit.edu>
Sat, 23 Nov 1996 22:37:33 +0000 (22:37 +0000)
handle.

Tue Sep  3 22:53:56 1996  Mark Eichin  <eichin@cygnus.com>

* kdc_preauth.c (get_preauth_hint_list): detect ap->get_edata
return status and don't pass back hint if it failed.
(get_etype_info): malloc one more word in entry for end marker.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@9543 dc483132-0cff-0310-8789-dd5450dbe970

src/kdc/ChangeLog
src/kdc/kdc_preauth.c

index dd74460814fa8166f5a1d7f2eff30d1ef1b46450..c2b2074f3dc7992786620895229df2e7745da115 100644 (file)
@@ -1,3 +1,14 @@
+Sat Nov 23 17:26:22 1996  Mark Eichin  <eichin@kitten.gen.ma.us>
+
+       * [krb5-libs/149] only generate requests that you can actually
+       handle.
+       
+       Tue Sep  3 22:53:56 1996  Mark Eichin  <eichin@cygnus.com>
+
+       * kdc_preauth.c (get_preauth_hint_list): detect ap->get_edata
+       return status and don't pass back hint if it failed.
+       (get_etype_info): malloc one more word in entry for end marker.
+
 Thu Nov  7 12:27:21 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
 
        * kdc_preauth.c (check_padata): Fixed error handling; in order for
index 0350068f998b186b738ed329486936ab4065ccb3..dd8d09b8b18b8510851901df8361520066781bc9 100644 (file)
@@ -203,8 +203,15 @@ void get_preauth_hint_list(request, client, server, e_data)
        memset(*pa, 0, sizeof(krb5_pa_data));
        (*pa)->magic = KV5M_PA_DATA;
        (*pa)->pa_type = ap->type;
-       if (ap->get_edata)
-           (ap->get_edata)(kdc_context, request, client, server, *pa);
+       if (ap->get_edata) {
+         retval = (ap->get_edata)(kdc_context, request, client, server, *pa);
+         if (retval) {
+           /* just failed on this type, continue */
+           free(*pa);
+           *pa = 0;
+           continue;
+         }
+       }
        pa++;
     }
     retval = encode_krb5_padata_sequence((const krb5_pa_data **) pa_data,
@@ -433,7 +440,7 @@ get_etype_info(context, request, client, server, pa_data)
 
     salt.data = 0;
 
-    entry = malloc((client->n_key_data * 2) * sizeof(krb5_etype_info_entry *));
+    entry = malloc((client->n_key_data * 2 + 1) * sizeof(krb5_etype_info_entry *));
     if (entry == NULL)
        return ENOMEM;
     entry[0] = NULL;