aboutsummaryrefslogtreecommitdiffstats
path: root/ext
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2024-05-02 15:51:28 +0900
committerGitHub <noreply@github.com>2024-05-02 15:51:28 +0900
commit3b71ccfdf149b1bb7a956209d16d9230b8d31305 (patch)
treef93223317e0aadfae2a27be832de70b11362428e /ext
parent59ff5431edf2f723206a166396225cdbbbb104cb (diff)
parent07eceb7f63260427cf8b062ad27da19b6841969e (diff)
downloadruby-openssl-3b71ccfdf149b1bb7a956209d16d9230b8d31305.tar.gz
Merge pull request #752 from rhenium/pkcs7-empty-signed-data-19974
Handle missing content in PKCS7
Diffstat (limited to 'ext')
-rw-r--r--ext/openssl/ossl_pkcs7.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/ext/openssl/ossl_pkcs7.c b/ext/openssl/ossl_pkcs7.c
index dbe53476..c8f7924e 100644
--- a/ext/openssl/ossl_pkcs7.c
+++ b/ext/openssl/ossl_pkcs7.c
@@ -165,7 +165,11 @@ ossl_pkcs7_s_read_smime(VALUE klass, VALUE arg)
out = NULL;
pkcs7 = SMIME_read_PKCS7(in, &out);
BIO_free(in);
- if(!pkcs7) ossl_raise(ePKCS7Error, NULL);
+ if (!pkcs7)
+ ossl_raise(ePKCS7Error, "Could not parse the PKCS7");
+ if (!pkcs7->d.ptr)
+ ossl_raise(ePKCS7Error, "No content in PKCS7");
+
data = out ? ossl_membio2str(out) : Qnil;
SetPKCS7(ret, pkcs7);
ossl_pkcs7_set_data(ret, data);
@@ -346,6 +350,8 @@ 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)
+ ossl_raise(rb_eArgError, "No content in PKCS7");
RTYPEDDATA_DATA(self) = p7;
PKCS7_free(p7_orig);