summaryrefslogtreecommitdiffstats
path: root/crypto/bio
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2016-05-09 15:04:11 +0100
committerMatt Caswell <matt@openssl.org>2016-05-09 17:06:25 +0100
commitd516d7a94098a284e35dfcf62b81be0cc771e120 (patch)
tree8a13144748890865adba9fc62ce7479105fa5e4e /crypto/bio
parent2b4825d0bb6057e44717007a54797df72babdb7e (diff)
Fix BIO_eof() for BIO pairs
BIO_eof() was always returning true when using a BIO pair. It should only be true if the peer BIO is empty and has been shutdown. RT#1215 Reviewed-by: Richard Levitte <levitte@openssl.org> (cherry picked from commit 3105d695358d86c0f2a404b2b74a1870b941ce5e)
Diffstat (limited to 'crypto/bio')
-rw-r--r--crypto/bio/bss_bio.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/crypto/bio/bss_bio.c b/crypto/bio/bss_bio.c
index 4d8727f8f8..202cc3615d 100644
--- a/crypto/bio/bss_bio.c
+++ b/crypto/bio/bss_bio.c
@@ -655,16 +655,15 @@ static long bio_ctrl(BIO *bio, int cmd, long num, void *ptr)
break;
case BIO_CTRL_EOF:
- {
- BIO *other_bio = ptr;
-
- if (other_bio) {
- struct bio_bio_st *other_b = other_bio->ptr;
+ if (b->peer != NULL) {
+ struct bio_bio_st *peer_b = b->peer->ptr;
- assert(other_b != NULL);
- ret = other_b->len == 0 && other_b->closed;
- } else
+ if (peer_b->len == 0 && peer_b->closed)
ret = 1;
+ else
+ ret = 0;
+ } else {
+ ret = 1;
}
break;