(krb5_set_default_in_tkt_etypes): filter out unwanted enctypes

Needed for Samba that tries really hard to use DES encryption types.

Reported by Natanael Copa on heimdal-discuss
This commit is contained in:
Love Hornquist Astrand
2010-03-17 09:30:11 -07:00
parent 523c393829
commit f26d6c2398

View File

@@ -825,23 +825,33 @@ KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_set_default_in_tkt_etypes(krb5_context context,
const krb5_enctype *etypes)
{
krb5_error_code ret;
krb5_enctype *p = NULL;
int i;
unsigned int n, m;
if(etypes) {
for (i = 0; etypes[i]; ++i) {
krb5_error_code ret;
ret = krb5_enctype_valid(context, etypes[i]);
if (ret)
return ret;
}
++i;
ALLOC(p, i);
for (n = 0; etypes[n]; n++)
;
n++;
ALLOC(p, n);
if(!p) {
krb5_set_error_message (context, ENOMEM, N_("malloc: out of memory", ""));
krb5_set_error_message (context, ENOMEM,
N_("malloc: out of memory", ""));
return ENOMEM;
}
memmove(p, etypes, i * sizeof(krb5_enctype));
for (n = 0, m = 0; etypes[n]; n++) {
ret = krb5_enctype_valid(context, etypes[n]);
if (ret)
continue;
p[m++] = etypes[n];
}
p[m] = ETYPE_NULL;
if (m == 0) {
free(p);
krb5_set_error_message (context, KRB5_PROG_ETYPE_NOSUPP,
N_("no valid enctype set", ""));
return KRB5_PROG_ETYPE_NOSUPP;
}
}
if(context->etypes)
free(context->etypes);