diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2024-05-02 15:51:28 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-02 15:51:28 +0900 |
commit | 3b71ccfdf149b1bb7a956209d16d9230b8d31305 (patch) | |
tree | f93223317e0aadfae2a27be832de70b11362428e /ext | |
parent | 59ff5431edf2f723206a166396225cdbbbb104cb (diff) | |
parent | 07eceb7f63260427cf8b062ad27da19b6841969e (diff) | |
download | ruby-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.c | 8 |
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); |