aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/bio
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2016-04-08 20:15:15 +0200
committerRichard Levitte <levitte@openssl.org>2016-04-11 14:57:34 +0200
commit2d897ae4d8af83d7920ac4c52d0cab32739d671b (patch)
tree3dc008cfc578ffd3a8764d511e1065de7d74b8f3 /crypto/bio
parentcdbf577973a76a0627debb5105f46d6f4509c39e (diff)
downloadopenssl-2d897ae4d8af83d7920ac4c52d0cab32739d671b.tar.gz
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')
-rw-r--r--crypto/bio/bss_file.c6
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);
}