(get_pa_etype_info{,2}): check for dup enctypes from the client and
filter them out. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@14119 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		| @@ -333,6 +333,9 @@ get_pa_etype_info(METHOD_DATA *md, hdb_entry *client, | |||||||
|     memset(pa.val, 0, pa.len * sizeof(*pa.val)); |     memset(pa.val, 0, pa.len * sizeof(*pa.val)); | ||||||
|  |  | ||||||
|     for(j = 0; j < etypes_len; j++) { |     for(j = 0; j < etypes_len; j++) { | ||||||
|  | 	for (i = 0; i < n; i++) | ||||||
|  | 	    if (pa.val[i].etype == etypes[j]) | ||||||
|  | 		goto skip1; | ||||||
| 	for(i = 0; i < client->keys.len; i++) { | 	for(i = 0; i < client->keys.len; i++) { | ||||||
| 	    if(client->keys.val[i].key.keytype == etypes[j]) { | 	    if(client->keys.val[i].key.keytype == etypes[j]) { | ||||||
|  		if (krb5_enctype_is_disabled(context, etypes[j])) |  		if (krb5_enctype_is_disabled(context, etypes[j])) | ||||||
| @@ -344,11 +347,12 @@ get_pa_etype_info(METHOD_DATA *md, hdb_entry *client, | |||||||
| 		} | 		} | ||||||
| 	    } | 	    } | ||||||
| 	} | 	} | ||||||
|  |     skip1:; | ||||||
|     } |     } | ||||||
|     for(i = 0; i < client->keys.len; i++) { |     for(i = 0; i < client->keys.len; i++) { | ||||||
| 	for(j = 0; j < etypes_len; j++) { | 	for(j = 0; j < etypes_len; j++) { | ||||||
| 	    if(client->keys.val[i].key.keytype == etypes[j]) | 	    if(client->keys.val[i].key.keytype == etypes[j]) | ||||||
| 		goto skip; | 		goto skip2; | ||||||
| 	} | 	} | ||||||
| 	if (krb5_enctype_is_disabled(context, client->keys.val[i].key.keytype)) | 	if (krb5_enctype_is_disabled(context, client->keys.val[i].key.keytype)) | ||||||
| 	    continue; | 	    continue; | ||||||
| @@ -357,7 +361,7 @@ get_pa_etype_info(METHOD_DATA *md, hdb_entry *client, | |||||||
| 	    free_ETYPE_INFO(&pa); | 	    free_ETYPE_INFO(&pa); | ||||||
| 	    return ret; | 	    return ret; | ||||||
| 	} | 	} | ||||||
|       skip:; |     skip2:; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     if(n != pa.len) { |     if(n != pa.len) { | ||||||
| @@ -481,6 +485,9 @@ get_pa_etype_info2(METHOD_DATA *md, hdb_entry *client, | |||||||
|     memset(pa.val, 0, pa.len * sizeof(*pa.val)); |     memset(pa.val, 0, pa.len * sizeof(*pa.val)); | ||||||
|  |  | ||||||
|     for(j = 0; j < etypes_len; j++) { |     for(j = 0; j < etypes_len; j++) { | ||||||
|  | 	for (i = 0; i < n; i++) | ||||||
|  | 	    if (pa.val[i].etype == etypes[j]) | ||||||
|  | 		goto skip1; | ||||||
| 	for(i = 0; i < client->keys.len; i++) { | 	for(i = 0; i < client->keys.len; i++) { | ||||||
| 	    if(client->keys.val[i].key.keytype == etypes[j]) { | 	    if(client->keys.val[i].key.keytype == etypes[j]) { | ||||||
| 		if (krb5_enctype_is_disabled(context, etypes[j])) | 		if (krb5_enctype_is_disabled(context, etypes[j])) | ||||||
| @@ -492,11 +499,12 @@ get_pa_etype_info2(METHOD_DATA *md, hdb_entry *client, | |||||||
| 		} | 		} | ||||||
| 	    } | 	    } | ||||||
| 	} | 	} | ||||||
|  |     skip1:; | ||||||
|     } |     } | ||||||
|     for(i = 0; i < client->keys.len; i++) { |     for(i = 0; i < client->keys.len; i++) { | ||||||
| 	for(j = 0; j < etypes_len; j++) { | 	for(j = 0; j < etypes_len; j++) { | ||||||
| 	    if(client->keys.val[i].key.keytype == etypes[j]) | 	    if(client->keys.val[i].key.keytype == etypes[j]) | ||||||
| 		goto skip; | 		goto skip2; | ||||||
| 	} | 	} | ||||||
| 	if (krb5_enctype_is_disabled(context, client->keys.val[i].key.keytype)) | 	if (krb5_enctype_is_disabled(context, client->keys.val[i].key.keytype)) | ||||||
| 	    continue; | 	    continue; | ||||||
| @@ -505,7 +513,7 @@ get_pa_etype_info2(METHOD_DATA *md, hdb_entry *client, | |||||||
| 	    free_ETYPE_INFO2(&pa); | 	    free_ETYPE_INFO2(&pa); | ||||||
| 	    return ret; | 	    return ret; | ||||||
| 	} | 	} | ||||||
|       skip:; |       skip2:; | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     if(n != pa.len) { |     if(n != pa.len) { | ||||||
| @@ -513,7 +521,7 @@ get_pa_etype_info2(METHOD_DATA *md, hdb_entry *client, | |||||||
| 	ret = krb5_unparse_name(context, client->principal, &name); | 	ret = krb5_unparse_name(context, client->principal, &name); | ||||||
| 	if (ret) | 	if (ret) | ||||||
| 	    name = "<unparse_name failed>"; | 	    name = "<unparse_name failed>"; | ||||||
| 	kdc_log(0, "internal error in get_pa_etype_info(%s): %d != %d",  | 	kdc_log(0, "internal error in get_pa_etype_info2(%s): %d != %d",  | ||||||
| 		name, n, pa.len); | 		name, n, pa.len); | ||||||
| 	if (ret == 0) | 	if (ret == 0) | ||||||
| 	    free(name); | 	    free(name); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand