summaryrefslogtreecommitdiff
path: root/ext/openssl/ossl_ssl.c
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-31 18:44:12 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-31 18:44:12 +0000
commit568ba1cfdbbaf1da755a44c1ee87aabed4488176 (patch)
treed7f3b5b363e7bcd0e19462401525ccf8756d6c20 /ext/openssl/ossl_ssl.c
parentcbb45e2f4e19715a63baf8aa91c916ce49aac248 (diff)
* ext/openssl/ossl_ssl.c (ossl_call_tmp_dh_callback): create an array
and use `rb_apply` to clean up calls to `rb_protect`. * ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/openssl/ossl_ssl.c')
-rw-r--r--ext/openssl/ossl_ssl.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index 3df690a4df..733544de29 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -250,19 +250,19 @@ ossl_client_cert_cb(SSL *ssl, X509 **x509, EVP_PKEY **pkey)
#if !defined(OPENSSL_NO_DH)
static VALUE
-ossl_call_tmp_dh_callback(VALUE *args)
+ossl_call_tmp_dh_callback(VALUE args)
{
SSL *ssl;
VALUE cb, dh;
EVP_PKEY *pkey;
- GetSSL(args[0], ssl);
+ GetSSL(rb_ary_entry(args, 0), ssl);
cb = (VALUE)SSL_get_ex_data(ssl, ossl_ssl_ex_tmp_dh_callback_idx);
if (NIL_P(cb)) return Qfalse;
- dh = rb_funcall(cb, rb_intern("call"), 3, args[0], args[1], args[2]);
+ dh = rb_apply(cb, rb_intern("call"), args);
pkey = GetPKeyPtr(dh);
if (EVP_PKEY_type(pkey->type) != EVP_PKEY_DH) return Qfalse;
- ossl_ssl_set_tmp_dh(args[0], dh);
+ ossl_ssl_set_tmp_dh(rb_ary_entry(args, 0), dh);
return Qtrue;
}
@@ -270,16 +270,16 @@ ossl_call_tmp_dh_callback(VALUE *args)
static DH*
ossl_tmp_dh_callback(SSL *ssl, int is_export, int keylength)
{
- VALUE args[3], success;
+ VALUE args, success, rb_ssl;
+
+ rb_ssl = (VALUE)SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx);
+
+ args = rb_ary_new_from_args(3, rb_ssl, INT2FIX(is_export), INT2FIX(keylength));
- args[0] = (VALUE)SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx);
- args[1] = INT2FIX(is_export);
- args[2] = INT2FIX(keylength);
- success = rb_protect((VALUE(*)_((VALUE)))ossl_call_tmp_dh_callback,
- (VALUE)args, NULL);
+ success = rb_protect(ossl_call_tmp_dh_callback, args, NULL);
if (!RTEST(success)) return NULL;
- return GetPKeyPtr(ossl_ssl_get_tmp_dh(args[0]))->pkey.dh;
+ return GetPKeyPtr(ossl_ssl_get_tmp_dh(rb_ssl))->pkey.dh;
}
#endif /* OPENSSL_NO_DH */