diff options
Diffstat (limited to 'src/lib/libcrypto/man')
| -rw-r--r-- | src/lib/libcrypto/man/BIO_push.3 | 38 |
1 files changed, 6 insertions, 32 deletions
diff --git a/src/lib/libcrypto/man/BIO_push.3 b/src/lib/libcrypto/man/BIO_push.3 index 35c0c5b6d0..413f8249a6 100644 --- a/src/lib/libcrypto/man/BIO_push.3 +++ b/src/lib/libcrypto/man/BIO_push.3 | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | .\" $OpenBSD: BIO_push.3,v 1.12 2022/12/08 11:33:58 tb Exp $ | 1 | .\" $OpenBSD: BIO_push.3,v 1.13 2022/12/16 13:41:55 schwarze Exp $ |
| 2 | .\" full merge up to: | 2 | .\" full merge up to: |
| 3 | .\" OpenSSL doc/man3/BIO_push.pod 791bfd91 Nov 19 20:38:27 2021 +0100 | 3 | .\" OpenSSL doc/man3/BIO_push.pod 791bfd91 Nov 19 20:38:27 2021 +0100 |
| 4 | .\" OpenSSL doc/man7/bio.pod 1cb7eff4 Sep 10 13:56:40 2019 +0100 | 4 | .\" OpenSSL doc/man7/bio.pod 1cb7eff4 Sep 10 13:56:40 2019 +0100 |
| @@ -67,7 +67,7 @@ | |||
| 67 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | 67 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
| 68 | .\" OF THE POSSIBILITY OF SUCH DAMAGE. | 68 | .\" OF THE POSSIBILITY OF SUCH DAMAGE. |
| 69 | .\" | 69 | .\" |
| 70 | .Dd $Mdocdate: December 8 2022 $ | 70 | .Dd $Mdocdate: December 16 2022 $ |
| 71 | .Dt BIO_PUSH 3 | 71 | .Dt BIO_PUSH 3 |
| 72 | .Os | 72 | .Os |
| 73 | .Sh NAME | 73 | .Sh NAME |
| @@ -141,11 +141,6 @@ For portability, it is best to make sure that | |||
| 141 | is at the beginning of its chain before calling | 141 | is at the beginning of its chain before calling |
| 142 | .Fn BIO_push . | 142 | .Fn BIO_push . |
| 143 | .Pp | 143 | .Pp |
| 144 | The LibreSSL implementation of | ||
| 145 | .Fn BIO_push | ||
| 146 | never creates cycles. | ||
| 147 | If a call would result in a cycle, nothing is changed and the call fails. | ||
| 148 | .Pp | ||
| 149 | .Fn BIO_pop | 144 | .Fn BIO_pop |
| 150 | removes the BIO | 145 | removes the BIO |
| 151 | .Fa b | 146 | .Fa b |
| @@ -214,16 +209,11 @@ have any effect is | |||
| 214 | .Fn BIO_push | 209 | .Fn BIO_push |
| 215 | returns | 210 | returns |
| 216 | .Fa b | 211 | .Fa b |
| 217 | for success or a different pointer for failure. | 212 | if it is not |
| 218 | In particular, it fails and returns | ||
| 219 | .Fa new_tail | ||
| 220 | if | ||
| 221 | .Fa b | ||
| 222 | is | ||
| 223 | .Dv NULL . | ||
| 224 | In LibreSSL, it fails and returns | ||
| 225 | .Dv NULL | 213 | .Dv NULL |
| 226 | if appending would create a cycle. | 214 | or |
| 215 | .Fa new_tail | ||
| 216 | if it is. | ||
| 227 | .Pp | 217 | .Pp |
| 228 | .Fn BIO_pop | 218 | .Fn BIO_pop |
| 229 | returns the BIO that followed | 219 | returns the BIO that followed |
| @@ -294,22 +284,6 @@ and the new chain will be | |||
| 294 | data can be written to | 284 | data can be written to |
| 295 | .Sy md1 | 285 | .Sy md1 |
| 296 | as before. | 286 | as before. |
| 297 | .Pp | ||
| 298 | Even though LibreSSL handles some of the edge cases gracefully, | ||
| 299 | the following idiom is recommended for portable error checking: | ||
| 300 | .Bd -literal -offset indent | ||
| 301 | if (b == NULL || new_tail == NULL || b == new_tail) | ||
| 302 | /* Report the problem and bail out. */ | ||
| 303 | if (BIO_push(b, new_tail) != b) | ||
| 304 | /* Report that nothing was changed | ||
| 305 | * because it would have created a cycle. */ | ||
| 306 | .Ed | ||
| 307 | .Pp | ||
| 308 | Even with the portable idiom, old and non-LibreSSL library implementations | ||
| 309 | may silently attempt to create cycles instead of rejecting them and returning | ||
| 310 | .Dv NULL , | ||
| 311 | which may result in infinite loops, infinite recursion, or segmentation | ||
| 312 | faults either right away or later on. | ||
| 313 | .Sh SEE ALSO | 287 | .Sh SEE ALSO |
| 314 | .Xr BIO_find_type 3 , | 288 | .Xr BIO_find_type 3 , |
| 315 | .Xr BIO_new 3 , | 289 | .Xr BIO_new 3 , |
