diff options
author | Richard Levitte <levitte@openssl.org> | 2016-04-08 20:15:15 +0200 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2016-04-11 14:57:34 +0200 |
commit | 2d897ae4d8af83d7920ac4c52d0cab32739d671b (patch) | |
tree | 3dc008cfc578ffd3a8764d511e1065de7d74b8f3 /crypto/bio/bss_file.c | |
parent | cdbf577973a76a0627debb5105f46d6f4509c39e (diff) |
BIO: respect opening in text mode
When a file is opened with BIO_new_file(), make sure that the internal
mode TEXT vs BINARY setting reflects what's given in the mode string.
Reviewed-by: Andy Polyakov <appro@openssl.org>
Diffstat (limited to 'crypto/bio/bss_file.c')
-rw-r--r-- | crypto/bio/bss_file.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c index 081c7f1632..a37e89d935 100644 --- a/crypto/bio/bss_file.c +++ b/crypto/bio/bss_file.c @@ -164,6 +164,10 @@ BIO *BIO_new_file(const char *filename, const char *mode) { BIO *ret; FILE *file = file_fopen(filename, mode); + int fp_flags = BIO_CLOSE; + + if (strchr(mode, 'b') == NULL) + fp_flags |= BIO_FP_TEXT; if (file == NULL) { SYSerr(SYS_F_FOPEN, get_last_sys_error()); @@ -181,7 +185,7 @@ BIO *BIO_new_file(const char *filename, const char *mode) BIO_clear_flags(ret, BIO_FLAGS_UPLINK); /* we did fopen -> we disengage * UPLINK */ - BIO_set_fp(ret, file, BIO_CLOSE); + BIO_set_fp(ret, file, fp_flags); return (ret); } |