From b68b0b2cde283af05ca0169ad950b6e8e270d227 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Mon, 12 May 2008 19:54:24 +0200 Subject: [PATCH] Fix a possible crash with SSL connections closing early. libratbox r25356 (jilles) --- libratbox/src/openssl.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libratbox/src/openssl.c b/libratbox/src/openssl.c index 17d6d4f..24f4ea0 100644 --- a/libratbox/src/openssl.c +++ b/libratbox/src/openssl.c @@ -82,6 +82,7 @@ rb_ssl_tryaccept(rb_fde_t * F, void *data) int ssl_err; lrb_assert(F->accept != NULL); int flags; + struct acceptdata *ad; if(!SSL_is_init_finished((SSL *) F->ssl)) { @@ -111,11 +112,12 @@ rb_ssl_tryaccept(rb_fde_t * F, void *data) } rb_settimeout(F, 0, NULL, NULL); rb_setselect(F, RB_SELECT_READ | RB_SELECT_WRITE, NULL, NULL); - - F->accept->callback(F, RB_OK, (struct sockaddr *) &F->accept->S, F->accept->addrlen, - F->accept->data); - rb_free(F->accept); + + ad = F->accept; F->accept = NULL; + ad->callback(F, RB_OK, (struct sockaddr *) &ad->S, ad->addrlen, + ad->data); + rb_free(ad); }