diff options
author | Tobias Brunner <tobias@strongswan.org> | 2012-06-07 16:50:11 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2012-06-07 16:50:11 +0200 |
commit | 9e9295ed1010ec7511ed76a0984246f450fcf6b5 (patch) | |
tree | 657009758b614323d3c25743b093fc80d5d83bea /src/libstrongswan | |
parent | 9041c074b359c4464f3ef1ca3071911a7e4fed3d (diff) | |
download | strongswan-9e9295ed1010ec7511ed76a0984246f450fcf6b5.tar.bz2 strongswan-9e9295ed1010ec7511ed76a0984246f450fcf6b5.tar.xz |
Properly handle empty RDN values in DN strings.
Diffstat (limited to 'src/libstrongswan')
-rw-r--r-- | src/libstrongswan/utils/identification.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/libstrongswan/utils/identification.c b/src/libstrongswan/utils/identification.c index 9f0007f78..0fa11690f 100644 --- a/src/libstrongswan/utils/identification.c +++ b/src/libstrongswan/utils/identification.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Tobias Brunner + * Copyright (C) 2009-2012 Tobias Brunner * Copyright (C) 2005-2009 Martin Willi * Copyright (C) 2005 Jan Hutter * Hochschule fuer Technik Rapperswil @@ -414,14 +414,22 @@ static status_t atodn(char *src, chunk_t *dn) } break; case SEARCH_NAME: - if (*src != ' ' && *src != '=') + if (*src == ' ' || *src == '=') + { + break; + } + else if (*src != ',' && *src != '/') { name.ptr = src; name.len = 1; whitespace = 0; state = READ_NAME; + break; } - break; + name = chunk_empty; + whitespace = 0; + state = READ_NAME; + /* fall-through */ case READ_NAME: if (*src != ',' && *src != '/' && *src != '\0') { |