diff options
author | Adriaan de Jong <dejong@fox-it.com> | 2012-02-14 11:11:24 +0100 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2012-03-30 11:33:03 +0200 |
commit | 00b973f8af85c3ea8fa3cef80eec55e8dc139b27 (patch) | |
tree | 42ad20eb89be0436bee7a397f2269272a4799414 /src/openvpn/pkcs11_polarssl.c | |
parent | 31444111839f0720d6173a71f66fa3a988bcf9fb (diff) | |
download | openvpn-00b973f8af85c3ea8fa3cef80eec55e8dc139b27.tar.gz openvpn-00b973f8af85c3ea8fa3cef80eec55e8dc139b27.tar.xz openvpn-00b973f8af85c3ea8fa3cef80eec55e8dc139b27.zip |
Migrated x509_get_subject to use of the garbage collector
This also cleans up a messy call in pkcs11.c to _openssl_get_subject, as discussed at FOSDEM.
Signed-off-by: Adriaan de Jong <dejong@fox-it.com>
Acked-by: James Yonan <james@openvpn.net>
Acked-by: David Sommerseth <davids@redhat.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
Diffstat (limited to 'src/openvpn/pkcs11_polarssl.c')
-rw-r--r-- | src/openvpn/pkcs11_polarssl.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/openvpn/pkcs11_polarssl.c b/src/openvpn/pkcs11_polarssl.c index ecef4d3..f5b7b8b 100644 --- a/src/openvpn/pkcs11_polarssl.c +++ b/src/openvpn/pkcs11_polarssl.c @@ -72,11 +72,11 @@ cleanup: return ret; } -int -pkcs11_certificate_dn (pkcs11h_certificate_t cert, char *dn, - size_t dn_len) +char * +pkcs11_certificate_dn (pkcs11h_certificate_t cert, struct gc_arena *gc) { int ret = 1; + char dn[1024] = {0}; x509_cert polar_cert = {0}; @@ -85,7 +85,7 @@ pkcs11_certificate_dn (pkcs11h_certificate_t cert, char *dn, goto cleanup; } - if (-1 == x509parse_dn_gets (dn, dn_len, &polar_cert.subject)) { + if (-1 == x509parse_dn_gets (dn, sizeof(dn), &polar_cert.subject)) { msg (M_FATAL, "PKCS#11: PolarSSL cannot parse subject"); goto cleanup; } @@ -95,7 +95,9 @@ pkcs11_certificate_dn (pkcs11h_certificate_t cert, char *dn, cleanup: x509_free(&polar_cert); - return ret; + if (ret == 0) + return string_alloc(dn, gc); + return NULL; } int |