[ruby/openssl] pkcs7: raise PKCS7Error for PKCS7 without content in PKCS7.read_smime
[pkuzco: expanded the fix for other content types] [ky: adjusted formatting and the exception type] https://github.com/ruby/openssl/commit/07eceb7f63 Co-authored-by: pkuzco <b.naamneh@gmail.com> Co-authored-by: Kazuki Yamaguchi <k@rhe.jp>
This commit is contained in:
parent
c9aa63a9e0
commit
55720f372d
@ -165,7 +165,11 @@ ossl_pkcs7_s_read_smime(VALUE klass, VALUE arg)
|
|||||||
out = NULL;
|
out = NULL;
|
||||||
pkcs7 = SMIME_read_PKCS7(in, &out);
|
pkcs7 = SMIME_read_PKCS7(in, &out);
|
||||||
BIO_free(in);
|
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;
|
data = out ? ossl_membio2str(out) : Qnil;
|
||||||
SetPKCS7(ret, pkcs7);
|
SetPKCS7(ret, pkcs7);
|
||||||
ossl_pkcs7_set_data(ret, data);
|
ossl_pkcs7_set_data(ret, data);
|
||||||
|
@ -158,6 +158,16 @@ class OpenSSL::TestPKCS7 < OpenSSL::TestCase
|
|||||||
def test_empty_signed_data_ruby_bug_19974
|
def test_empty_signed_data_ruby_bug_19974
|
||||||
data = "-----BEGIN PKCS7-----\nMAsGCSqGSIb3DQEHAg==\n-----END PKCS7-----\n"
|
data = "-----BEGIN PKCS7-----\nMAsGCSqGSIb3DQEHAg==\n-----END PKCS7-----\n"
|
||||||
assert_raise(ArgumentError) { OpenSSL::PKCS7.new(data) }
|
assert_raise(ArgumentError) { OpenSSL::PKCS7.new(data) }
|
||||||
|
|
||||||
|
data = <<END
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Disposition: attachment; filename="smime.p7m"
|
||||||
|
Content-Type: application/x-pkcs7-mime; smime-type=signed-data; name="smime.p7m"
|
||||||
|
Content-Transfer-Encoding: base64
|
||||||
|
|
||||||
|
#{data}
|
||||||
|
END
|
||||||
|
assert_raise(OpenSSL::PKCS7::PKCS7Error) { OpenSSL::PKCS7.read_smime(data) }
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_graceful_parsing_failure #[ruby-core:43250]
|
def test_graceful_parsing_failure #[ruby-core:43250]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user