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:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user