summaryrefslogtreecommitdiff
path: root/ext/openssl/ossl_x509crl.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/openssl/ossl_x509crl.c')
-rw-r--r--ext/openssl/ossl_x509crl.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/ext/openssl/ossl_x509crl.c b/ext/openssl/ossl_x509crl.c
index 517080b32de..a7746aa2b3e 100644
--- a/ext/openssl/ossl_x509crl.c
+++ b/ext/openssl/ossl_x509crl.c
@@ -92,33 +92,20 @@ ossl_x509crl_initialize(int argc, VALUE *argv, VALUE self)
{
BIO *in;
X509_CRL *crl;
- VALUE buffer;
+ VALUE arg;
- if (rb_scan_args(argc, argv, "01", &buffer) == 0) {
+ if (rb_scan_args(argc, argv, "01", &arg) == 0) {
return self;
}
- StringValue(buffer);
-
- in = BIO_new_mem_buf(RSTRING(buffer)->ptr, RSTRING(buffer)->len);
- if (!in) {
- ossl_raise(eX509CRLError, NULL);
- }
- /*
- * TODO:
- * Check if we should free CRL
- X509_CRL_free(DATA_PTR(self));
- */
+ arg = ossl_to_der_if_possible(arg);
+ in = ossl_obj2bio(arg);
crl = PEM_read_bio_X509_CRL(in, (X509_CRL **)&DATA_PTR(self), NULL, NULL);
if (!crl) {
BIO_reset(in);
-
crl = d2i_X509_CRL_bio(in, (X509_CRL **)&DATA_PTR(self));
}
- if (!crl) {
- BIO_free(in);
- ossl_raise(eX509CRLError, NULL);
- }
BIO_free(in);
+ if (!crl) ossl_raise(eX509CRLError, NULL);
return self;
}