check that valid enctypes are not 0, cid#29

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24118 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2008-12-11 05:02:43 +00:00
parent 6dd6406d82
commit c96c9b0ced

View File

@@ -4690,6 +4690,7 @@ krb5_keytype_to_enctypes (krb5_context context,
krb5_keytype keytype, krb5_keytype keytype,
unsigned *len, unsigned *len,
krb5_enctype **val) krb5_enctype **val)
__attribute__((deprecated))
{ {
int i; int i;
unsigned n = 0; unsigned n = 0;
@@ -4697,18 +4698,26 @@ krb5_keytype_to_enctypes (krb5_context context,
for (i = num_etypes - 1; i >= 0; --i) { for (i = num_etypes - 1; i >= 0; --i) {
if (etypes[i]->keytype->type == keytype if (etypes[i]->keytype->type == keytype
&& !(etypes[i]->flags & F_PSEUDO)) && !(etypes[i]->flags & F_PSEUDO)
&& krb5_enctype_valid(context, etypes[i]->type) == 0)
++n; ++n;
} }
if (n == 0) {
krb5_set_error_message(context, KRB5_PROG_KEYTYPE_NOSUPP,
"Keytype have no mapping");
return KRB5_PROG_KEYTYPE_NOSUPP;
}
ret = malloc(n * sizeof(*ret)); ret = malloc(n * sizeof(*ret));
if (ret == NULL && n != 0) { if (ret == NULL && n != 0) {
krb5_set_error_message(context, ENOMEM, N_("malloc: out of memory", "")); krb5_set_error_message(context, ENOMEM, "malloc: out of memory");
return ENOMEM; return ENOMEM;
} }
n = 0; n = 0;
for (i = num_etypes - 1; i >= 0; --i) { for (i = num_etypes - 1; i >= 0; --i) {
if (etypes[i]->keytype->type == keytype if (etypes[i]->keytype->type == keytype
&& !(etypes[i]->flags & F_PSEUDO)) && !(etypes[i]->flags & F_PSEUDO)
&& krb5_enctype_valid(context, etypes[i]->type) == 0)
ret[n++] = etypes[i]->type; ret[n++] = etypes[i]->type;
} }
*len = n; *len = n;