diff options
| -rw-r--r-- | src/lib/libcrypto/bio/bio_lib.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/lib/libcrypto/bio/bio_lib.c b/src/lib/libcrypto/bio/bio_lib.c index 2ffa0a765c..4c3d7ed5f5 100644 --- a/src/lib/libcrypto/bio/bio_lib.c +++ b/src/lib/libcrypto/bio/bio_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: bio_lib.c,v 1.40 2022/12/06 16:10:55 schwarze Exp $ */ | 1 | /* $OpenBSD: bio_lib.c,v 1.41 2022/12/06 17:59:21 schwarze Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -625,7 +625,11 @@ BIO_ctrl_wpending(BIO *bio) | |||
| 625 | } | 625 | } |
| 626 | 626 | ||
| 627 | 627 | ||
| 628 | /* put the 'bio' on the end of b's list of operators */ | 628 | /* |
| 629 | * Append "bio" to the end of the chain containing "b": | ||
| 630 | * Two chains "b -> lb" and "oldhead -> bio" | ||
| 631 | * become two chains "b -> lb -> bio" and "oldhead". | ||
| 632 | */ | ||
| 629 | BIO * | 633 | BIO * |
| 630 | BIO_push(BIO *b, BIO *bio) | 634 | BIO_push(BIO *b, BIO *bio) |
| 631 | { | 635 | { |
| @@ -637,8 +641,11 @@ BIO_push(BIO *b, BIO *bio) | |||
| 637 | while (lb->next_bio != NULL) | 641 | while (lb->next_bio != NULL) |
| 638 | lb = lb->next_bio; | 642 | lb = lb->next_bio; |
| 639 | lb->next_bio = bio; | 643 | lb->next_bio = bio; |
| 640 | if (bio != NULL) | 644 | if (bio != NULL) { |
| 645 | if (bio->prev_bio != NULL) | ||
| 646 | bio->prev_bio->next_bio = NULL; | ||
| 641 | bio->prev_bio = lb; | 647 | bio->prev_bio = lb; |
| 648 | } | ||
| 642 | /* called to do internal processing */ | 649 | /* called to do internal processing */ |
| 643 | BIO_ctrl(b, BIO_CTRL_PUSH, 0, lb); | 650 | BIO_ctrl(b, BIO_CTRL_PUSH, 0, lb); |
| 644 | return (b); | 651 | return (b); |
