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
This commit is contained in:
rhe 2016-06-05 16:18:38 +00:00
parent 0a523ab20d
commit c7b583a744
2 changed files with 14 additions and 6 deletions

View File

@ -1,3 +1,10 @@
Mon Jun 6 01:18:10 2016 Kazuki Yamaguchi <k@rhe.jp>
* 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 <k@rhe.jp>
* ext/openssl/extconf.rb: Check existence of accessor functions that

View File

@ -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