From: Fraser Tweedale Date: Wed, 15 Jun 2022 00:50:57 +0000 (+1000) Subject: Fix documentation of BIO_FLAGS_BASE64_NO_NL X-Git-Tag: openssl-3.2.0-alpha1~2517 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0edcbacca99ab2b716da395f204610fc2775ea83;p=thirdparty%2Fopenssl.git Fix documentation of BIO_FLAGS_BASE64_NO_NL Commit 8bfb7506d210841f2ee4eda8afe96441a0e33fa5 updated `BIO_f_base64(3)` to improve the documentation of the `BIO_FLAGS_BASE64_NO_NL` flag. In particular, the updated text states that when this flag is used, all newlines in the input are ignored. This is incorrect, as the following program proves: ```c unsigned char *in_buf = "IlRoZSBxdWljayBicm93biBmb3gganVt\ncHMgb3ZlciBhIGxhenkgZG9nLiI=\n"; int main(int argc, char **argv) { BIO *b64 = BIO_new(BIO_f_base64()); if (b64 == NULL) return 1; BIO_set_flags(b64, BIO_get_flags(b64) | BIO_FLAGS_BASE64_NO_NL); int in_len = strlen(in_buf); BIO *in = BIO_new_mem_buf(in_buf, in_len); if (in == NULL) return 2; in = BIO_push(b64, in); unsigned char *out_buf = calloc(in_len, sizeof(unsigned char)); if (out_buf == NULL) return 3; size_t out_len; int r = BIO_read_ex(in, out_buf, in_len, &out_len); printf("rv = %d\n", r); printf("decoded = %s\n", out_buf); return 0; } ``` Update the text of `BIO_f_base64(3)` to clarify that when the flag is set, the data must be all on one line (with or without a trailing newline character). Signed-off-by: Fraser Tweedale Reviewed-by: Paul Dale Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/18568) --- diff --git a/doc/man3/BIO_f_base64.pod b/doc/man3/BIO_f_base64.pod index 0bfa4afd0c9..c865f0a17ac 100644 --- a/doc/man3/BIO_f_base64.pod +++ b/doc/man3/BIO_f_base64.pod @@ -38,9 +38,8 @@ to flush the final block through the BIO. The flag BIO_FLAGS_BASE64_NO_NL can be set with BIO_set_flags(). For writing, it causes all data to be written on one line without newline at the end. -For reading, it forces the decoder to process the data regardless -of newlines. All newlines are ignored and the input does not need -to contain any newline at all. +For reading, it expects the data to be all on one line (with or +without a trailing newline). =head1 NOTES