summaryrefslogtreecommitdiffstats
path: root/src/openvpn/pkcs11_polarssl.c
diff options
context:
space:
mode:
authorAdriaan de Jong <dejong@fox-it.com>2012-02-14 11:11:24 +0100
committerDavid Sommerseth <davids@redhat.com>2012-03-30 11:33:03 +0200
commit00b973f8af85c3ea8fa3cef80eec55e8dc139b27 (patch)
tree42ad20eb89be0436bee7a397f2269272a4799414 /src/openvpn/pkcs11_polarssl.c
parent31444111839f0720d6173a71f66fa3a988bcf9fb (diff)
downloadopenvpn-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.c12
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