From 320a59ea875a1e49111ab8a2f24a692728828a62 Mon Sep 17 00:00:00 2001 From: rhe Date: Sun, 5 Jun 2016 16:18:38 +0000 Subject: openssl: avoid d2i_ASN1_BOOLEAN() * ext/openssl/ossl_asn1.c (decode_bool): Do the same thing as d2i_ASN1_BOOLEAN() does by ourselves. This function is removed in OpenSSL 1.1.0. [ruby-core:75225] [Feature #12324] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ ext/openssl/ossl_asn1.c | 13 +++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index c2e87a607a..b8c5892d5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Jun 6 01:18:10 2016 Kazuki Yamaguchi + + * ext/openssl/ossl_asn1.c (decode_bool): Do the same thing as + d2i_ASN1_BOOLEAN() does by ourselves. This function is removed in + OpenSSL 1.1.0. + [ruby-core:75225] [Feature #12324] + Mon Jun 6 00:34:16 2016 Kazuki Yamaguchi * ext/openssl/extconf.rb: Check existence of accessor functions that diff --git a/ext/openssl/ossl_asn1.c b/ext/openssl/ossl_asn1.c index 51f0475424..03822b5c26 100644 --- a/ext/openssl/ossl_asn1.c +++ b/ext/openssl/ossl_asn1.c @@ -357,14 +357,15 @@ obj_to_asn1derstr(VALUE obj) static VALUE decode_bool(unsigned char* der, long length) { - int val; - const unsigned char *p; + const unsigned char *p = der; - p = der; - if((val = d2i_ASN1_BOOLEAN(NULL, &p, length)) < 0) - ossl_raise(eASN1Error, NULL); + assert(length == 3); + if (*p++ != 1) + ossl_raise(eASN1Error, "not a boolean"); + if (*p++ != 1) + ossl_raise(eASN1Error, "length is not 1"); - return val ? Qtrue : Qfalse; + return *p ? Qtrue : Qfalse; } static VALUE -- cgit v1.2.3