Skip to content

Commit 1ef5151

Browse files
committed
ssl: assume SSL/SSL_CTX always have a valid reference to the Ruby object
It is impossible that they don't.
1 parent e9f6fce commit 1ef5151

File tree

1 file changed

+5
-20
lines changed

1 file changed

+5
-20
lines changed

ext/openssl/ossl_ssl.c

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -381,13 +381,10 @@ ossl_sslctx_session_get_cb(SSL *ssl, unsigned char *buf, int len, int *copy)
381381
{
382382
VALUE ary, ssl_obj, ret_obj;
383383
SSL_SESSION *sess;
384-
void *ptr;
385384
int state = 0;
386385

387386
OSSL_Debug("SSL SESSION get callback entered");
388-
if ((ptr = SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx)) == NULL)
389-
return NULL;
390-
ssl_obj = (VALUE)ptr;
387+
ssl_obj = (VALUE)SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx);
391388
ary = rb_ary_new2(2);
392389
rb_ary_push(ary, ssl_obj);
393390
rb_ary_push(ary, rb_str_new((const char *)buf, len));
@@ -425,14 +422,11 @@ static int
425422
ossl_sslctx_session_new_cb(SSL *ssl, SSL_SESSION *sess)
426423
{
427424
VALUE ary, ssl_obj, sess_obj;
428-
void *ptr;
429425
int state = 0;
430426

431427
OSSL_Debug("SSL SESSION new callback entered");
432428

433-
if ((ptr = SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx)) == NULL)
434-
return 1;
435-
ssl_obj = (VALUE)ptr;
429+
ssl_obj = (VALUE)SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx);
436430
sess_obj = rb_obj_alloc(cSSLSession);
437431
SSL_SESSION_up_ref(sess);
438432
DATA_PTR(sess_obj) = sess;
@@ -479,9 +473,7 @@ ossl_sslctx_session_remove_cb(SSL_CTX *ctx, SSL_SESSION *sess)
479473

480474
OSSL_Debug("SSL SESSION remove callback entered");
481475

482-
if ((ptr = SSL_CTX_get_ex_data(ctx, ossl_sslctx_ex_ptr_idx)) == NULL)
483-
return;
484-
sslctx_obj = (VALUE)ptr;
476+
sslctx_obj = (VALUE)SSL_CTX_get_ex_data(ctx, ossl_sslctx_ex_ptr_idx);
485477
sess_obj = rb_obj_alloc(cSSLSession);
486478
SSL_SESSION_up_ref(sess);
487479
DATA_PTR(sess_obj) = sess;
@@ -551,16 +543,13 @@ static int
551543
ssl_servername_cb(SSL *ssl, int *ad, void *arg)
552544
{
553545
VALUE ary, ssl_obj;
554-
void *ptr;
555546
int state = 0;
556547
const char *servername = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name);
557548

558549
if (!servername)
559550
return SSL_TLSEXT_ERR_OK;
560551

561-
if ((ptr = SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx)) == NULL)
562-
return SSL_TLSEXT_ERR_ALERT_FATAL;
563-
ssl_obj = (VALUE)ptr;
552+
ssl_obj = (VALUE)SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx);
564553
ary = rb_ary_new2(2);
565554
rb_ary_push(ary, ssl_obj);
566555
rb_ary_push(ary, rb_str_new2(servername));
@@ -578,12 +567,8 @@ static void
578567
ssl_renegotiation_cb(const SSL *ssl)
579568
{
580569
VALUE ssl_obj, sslctx_obj, cb;
581-
void *ptr;
582-
583-
if ((ptr = SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx)) == NULL)
584-
ossl_raise(eSSLError, "SSL object could not be retrieved");
585-
ssl_obj = (VALUE)ptr;
586570

571+
ssl_obj = (VALUE)SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx);
587572
sslctx_obj = rb_attr_get(ssl_obj, id_i_context);
588573
cb = rb_attr_get(sslctx_obj, id_i_renegotiation_cb);
589574
if (NIL_P(cb)) return;

0 commit comments

Comments
 (0)