aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/plugins/openssl/openssl_x509.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-06-24 12:00:56 +0200
committerMartin Willi <martin@revosec.ch>2010-06-24 12:01:18 +0200
commit07c5aacce854899adafe66f4c8e51a376045abca (patch)
tree805a380acb2dc7b8edebdda39c7c8930fe98554e /src/libstrongswan/plugins/openssl/openssl_x509.c
parent7a74295e425583f4271855ec7bc42076219b4340 (diff)
downloadstrongswan-07c5aacce854899adafe66f4c8e51a376045abca.tar.bz2
strongswan-07c5aacce854899adafe66f4c8e51a376045abca.tar.xz
Select subjectAltName address family using address length in openssl plugin
Diffstat (limited to 'src/libstrongswan/plugins/openssl/openssl_x509.c')
-rw-r--r--src/libstrongswan/plugins/openssl/openssl_x509.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/libstrongswan/plugins/openssl/openssl_x509.c b/src/libstrongswan/plugins/openssl/openssl_x509.c
index 05b3c63ec..93264e76c 100644
--- a/src/libstrongswan/plugins/openssl/openssl_x509.c
+++ b/src/libstrongswan/plugins/openssl/openssl_x509.c
@@ -173,8 +173,18 @@ static identification_t *general_name2id(GENERAL_NAME *name)
return identification_create_from_encoding(ID_DER_ASN1_GN_URI,
openssl_asn1_str2chunk(name->d.uniformResourceIdentifier));
case GEN_IPADD:
- return identification_create_from_encoding(ID_IPV4_ADDR,
- openssl_asn1_str2chunk(name->d.iPAddress));
+ {
+ chunk_t chunk = openssl_asn1_str2chunk(name->d.iPAddress);
+ if (chunk.len == 4)
+ {
+ return identification_create_from_encoding(ID_IPV4_ADDR, chunk);
+ }
+ if (chunk.len == 16)
+ {
+ return identification_create_from_encoding(ID_IPV6_ADDR, chunk);
+ }
+ return NULL;
+ }
case GEN_DIRNAME :
return openssl_x509_name2id(name->d.directoryName);
default: