diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2011-02-10 15:51:18 +0100 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2011-02-10 15:51:18 +0100 |
commit | d390b3b9015aac38b186237dfcbf5e3c0a1ea9f9 (patch) | |
tree | d805c8aff9a79354e2bbb156a1e198a7f88317b9 /src/libstrongswan/plugins/openssl/openssl_x509.c | |
parent | afddd6a7e854a0b11154d7069219cf3373e0d9fc (diff) | |
download | strongswan-d390b3b9015aac38b186237dfcbf5e3c0a1ea9f9.tar.bz2 strongswan-d390b3b9015aac38b186237dfcbf5e3c0a1ea9f9.tar.xz |
[hopefully] fixed pathlen problem on ARM platforms
Diffstat (limited to 'src/libstrongswan/plugins/openssl/openssl_x509.c')
-rw-r--r-- | src/libstrongswan/plugins/openssl/openssl_x509.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/libstrongswan/plugins/openssl/openssl_x509.c b/src/libstrongswan/plugins/openssl/openssl_x509.c index f096b2b5b..f7495b2ae 100644 --- a/src/libstrongswan/plugins/openssl/openssl_x509.c +++ b/src/libstrongswan/plugins/openssl/openssl_x509.c @@ -84,7 +84,7 @@ struct private_openssl_x509_t { /** * Pathlen constraint */ - int pathlen; + u_char pathlen; /** * certificate subject @@ -250,7 +250,7 @@ METHOD(x509_t, get_authKeyIdentifier, chunk_t, return chunk_empty; } -METHOD(x509_t, get_constraint, int, +METHOD(x509_t, get_constraint, u_int, private_openssl_x509_t *this, x509_constraint_t type) { switch (type) @@ -586,6 +586,7 @@ static bool parse_basicConstraints_ext(private_openssl_x509_t *this, X509_EXTENSION *ext) { BASIC_CONSTRAINTS *constraints; + long pathlen; constraints = (BASIC_CONSTRAINTS*)X509V3_EXT_d2i(ext); if (constraints) @@ -596,7 +597,10 @@ static bool parse_basicConstraints_ext(private_openssl_x509_t *this, } if (constraints->pathlen) { - this->pathlen = ASN1_INTEGER_get(constraints->pathlen); + + pathlen = ASN1_INTEGER_get(constraints->pathlen); + this->pathlen = (pathlen >= 0 && pathlen < 128) ? + pathlen : X509_NO_CONSTRAINT; } BASIC_CONSTRAINTS_free(constraints); return TRUE; |