summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/openssl/ossl_pkcs7.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/openssl/ossl_pkcs7.c b/ext/openssl/ossl_pkcs7.c
index 57a121a6ce..6af57f21b6 100644
--- a/ext/openssl/ossl_pkcs7.c
+++ b/ext/openssl/ossl_pkcs7.c
@@ -167,8 +167,10 @@ ossl_pkcs7_s_read_smime(VALUE klass, VALUE arg)
BIO_free(in);
if (!pkcs7)
ossl_raise(ePKCS7Error, "Could not parse the PKCS7");
- if (!pkcs7->d.ptr)
+ if (!pkcs7->d.ptr) {
+ PKCS7_free(pkcs7);
ossl_raise(ePKCS7Error, "No content in PKCS7");
+ }
data = out ? ossl_membio2str(out) : Qnil;
SetPKCS7(ret, pkcs7);
@@ -348,8 +350,10 @@ ossl_pkcs7_initialize(int argc, VALUE *argv, VALUE self)
BIO_free(in);
if (!p7)
ossl_raise(rb_eArgError, "Could not parse the PKCS7");
- if (!p7->d.ptr)
+ if (!p7->d.ptr) {
+ PKCS7_free(p7);
ossl_raise(rb_eArgError, "No content in PKCS7");
+ }
RTYPEDDATA_DATA(self) = p7;
PKCS7_free(p7_orig);