Revert BIO_push(3) cycle prevention (bio_lib.c rev. 1.42).
authorschwarze <schwarze@openbsd.org>
Fri, 16 Dec 2022 13:41:55 +0000 (13:41 +0000)
committerschwarze <schwarze@openbsd.org>
Fri, 16 Dec 2022 13:41:55 +0000 (13:41 +0000)
commit39105ab6a7bb5cc5288737bae8a94d8ed0786b99
tree69be68efe7649c54d03efc7781903e6b5216dfbb
parent21998d4690adc3ff45ab3a5d54ead3976b1c962e
Revert BIO_push(3) cycle prevention (bio_lib.c rev. 1.42).

jsing@ worries that cycle prevention might increase risk because
software that is not checking return values (and indeed, not checking
is likely common in practice) might silently behave incorrectly
with cycle prevention whereas without, it will likely either crash
right away through infinite recursion or at least hang in an infinite
loop when trying to use the cyclic chain, in both cases making it
likely that the bug will be found and fixed.

Besides, tb@ points out that BIO_set_next(3) ought to behave as
similarly as possible to BIO_push(3), but adding cycle prevention
to BIO_set_next(3) would be even less convincing because that
function does not provide a return value, encouraging users to
expect that it will always succeed.  While a safe idiom for checking
the success of BIO_set_next(3) could easily be designed, let's be
realistic: application software would be highly unlikely to pick up
such an idiom.
lib/libcrypto/bio/bio_lib.c
lib/libcrypto/man/BIO_push.3