From cb6c4e0430d5dd2aba9dfa0ef5f2e4f5b0c6455b Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 18 Jul 2013 16:45:10 +0200 Subject: identification: parse identities having a "@@" prefix as ID_RFC822_ADDR Original patch by Gerald Richter. --- src/libstrongswan/utils/identification.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/libstrongswan/utils/identification.c b/src/libstrongswan/utils/identification.c index 06ec533ea..5df3e5fe2 100644 --- a/src/libstrongswan/utils/identification.c +++ b/src/libstrongswan/utils/identification.c @@ -1000,23 +1000,23 @@ identification_t *identification_create_from_string(char *string) { if (*string == '@') { - if (*(string + 1) == '#') + string++; + if (*string == '#') { this = identification_create(ID_KEY_ID); - string += 2; - this->encoded = chunk_from_hex( - chunk_create(string, strlen(string)), NULL); + this->encoded = chunk_from_hex(chunk_from_str(string + 1), NULL); + return &this->public; + } + else if (*string == '@') + { + this = identification_create(ID_USER_FQDN); + this->encoded = chunk_clone(chunk_from_str(string + 1)); return &this->public; } else { this = identification_create(ID_FQDN); - string += 1; - this->encoded.len = strlen(string); - if (this->encoded.len) - { /* if we only got an @ */ - this->encoded.ptr = strdup(string); - } + this->encoded = chunk_clone(chunk_from_str(string)); return &this->public; } } @@ -1093,4 +1093,3 @@ identification_t *identification_create_from_sockaddr(sockaddr_t *sockaddr) } } } - -- cgit v1.2.3