diff options
author | Fraser Tweedale <ftweedal@redhat.com> | 2022-06-15 10:50:57 +1000 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2022-06-16 16:08:51 +0200 |
commit | 8b738f38514d864496357f69b66ac90a458c4cda (patch) | |
tree | 41f74fcbfff9817e8deeaf12cca9cb322190169a /doc/man3 | |
parent | 67e1b558e67a3bee1f20f8a9e067211b440404f8 (diff) |
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 <ftweedal@redhat.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18568)
(cherry picked from commit 0edcbacca99ab2b716da395f204610fc2775ea83)
Diffstat (limited to 'doc/man3')
-rw-r--r-- | doc/man3/BIO_f_base64.pod | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/doc/man3/BIO_f_base64.pod b/doc/man3/BIO_f_base64.pod index 0bfa4afd0c..c865f0a17a 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 |