diff options
-rw-r--r-- | ext/openssl/ossl_pkcs7.c | 8 |
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); |