From 5d780babe3e0e60e92e41bc38c96963abfe3655f Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 30 Jan 2003 21:49:12 +0000 Subject: [PATCH] A few small bugs with BIO popping. PR: 364 --- crypto/bio/bio_lib.c | 3 ++- ssl/bio_ssl.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/crypto/bio/bio_lib.c b/crypto/bio/bio_lib.c index 98ce395519..692c8fb5c6 100644 --- a/crypto/bio/bio_lib.c +++ b/crypto/bio/bio_lib.c @@ -395,6 +395,8 @@ BIO *BIO_pop(BIO *b) if (b == NULL) return(NULL); ret=b->next_bio; + BIO_ctrl(b,BIO_CTRL_POP,0,NULL); + if (b->prev_bio != NULL) b->prev_bio->next_bio=b->next_bio; if (b->next_bio != NULL) @@ -402,7 +404,6 @@ BIO *BIO_pop(BIO *b) b->next_bio=NULL; b->prev_bio=NULL; - BIO_ctrl(b,BIO_CTRL_POP,0,NULL); return(ret); } diff --git a/ssl/bio_ssl.c b/ssl/bio_ssl.c index 467e149947..1301549e21 100644 --- a/ssl/bio_ssl.c +++ b/ssl/bio_ssl.c @@ -403,6 +403,10 @@ static long ssl_ctrl(BIO *b, int cmd, long num, void *ptr) { BIO_free_all(ssl->wbio); } + if (b->next_bio != NULL) + { + CRYPTO_add(&b->next_bio->references,1,CRYPTO_LOCK_BIO); + } ssl->wbio=NULL; ssl->rbio=NULL; break; -- 2.25.1