identification: Compare identity types when comparing ID_FQDN/ID_RFC822_ADDR identities

References #1380.
This commit is contained in:
Tobias Brunner 2016-04-06 12:16:11 +02:00
parent a6289d9323
commit a366fa365e
1 changed files with 4 additions and 3 deletions

View File

@ -729,7 +729,8 @@ METHOD(identification_t, equals_strcasecmp, bool,
/* we do some extra sanity checks to check for invalid IDs with a
* terminating null in it. */
if (this->encoded.len == encoded.len &&
if (this->type == other->get_type(other) &&
this->encoded.len == encoded.len &&
memchr(this->encoded.ptr, 0, this->encoded.len) == NULL &&
memchr(encoded.ptr, 0, encoded.len) == NULL &&
strncasecmp(this->encoded.ptr, encoded.ptr, this->encoded.len) == 0)
@ -1154,15 +1155,15 @@ static private_identification_t *identification_create(id_type_t type)
{
case ID_ANY:
this->public.hash = _hash_binary;
this->public.matches = _matches_any;
this->public.equals = _equals_binary;
this->public.matches = _matches_any;
this->public.contains_wildcards = return_true;
break;
case ID_FQDN:
case ID_RFC822_ADDR:
this->public.hash = _hash_binary;
this->public.matches = _matches_string;
this->public.equals = _equals_strcasecmp;
this->public.matches = _matches_string;
this->public.contains_wildcards = _contains_wildcards_memchr;
break;
case ID_DER_ASN1_DN: