aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan
diff options
context:
space:
mode:
authorTobias Brunner <tobias@strongswan.org>2012-06-07 16:50:11 +0200
committerTobias Brunner <tobias@strongswan.org>2012-06-07 16:50:11 +0200
commit9e9295ed1010ec7511ed76a0984246f450fcf6b5 (patch)
tree657009758b614323d3c25743b093fc80d5d83bea /src/libstrongswan
parent9041c074b359c4464f3ef1ca3071911a7e4fed3d (diff)
downloadstrongswan-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.c14
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')
{