[openssl-commits] [openssl] OpenSSL_1_0_2-stable update

Rich Salz rsalz at openssl.org
Mon Sep 21 21:32:04 UTC 2015


The branch OpenSSL_1_0_2-stable has been updated
       via  0ea050e743e57235ba2e1a9a105b61490c09c149 (commit)
      from  d601b9b50c0157279d9b968e27c944719f85936f (commit)


- Log -----------------------------------------------------------------
commit 0ea050e743e57235ba2e1a9a105b61490c09c149
Author: David Woodhouse <David.Woodhouse at intel.com>
Date:   Wed Sep 9 15:49:01 2015 -0400

    RT3479: Add UTF8 support to BIO_read_filename()
    
    If we use BIO_new_file(), on Windows it'll jump through hoops to work
    around their unusual charset/Unicode handling. it'll convert a UTF-8
    filename to UCS-16LE and attempt to use _wfopen().
    
    If you use BIO_read_filename(), it doesn't do this. Shouldn't it be
    consistent?
    
    It would certainly be nice if SSL_use_certificate_chain_file() worked.
    
    Also made BIO_C_SET_FILENAME work (rsalz)
    
    Signed-off-by: Rich Salz <rsalz at akamai.com>
    Reviewed-by: Andy Polyakov <appro at openssl.org>
    (cherry picked from commit ff03599a2f518dbdf13bca0bb0208e431b892fe9)

-----------------------------------------------------------------------

Summary of changes:
 crypto/bio/bss_file.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/crypto/bio/bss_file.c b/crypto/bio/bss_file.c
index d7f15b0..bfba93e 100644
--- a/crypto/bio/bss_file.c
+++ b/crypto/bio/bss_file.c
@@ -115,9 +115,8 @@ static BIO_METHOD methods_filep = {
     NULL,
 };
 
-BIO *BIO_new_file(const char *filename, const char *mode)
+static FILE *file_fopen(const char *filename, const char *mode)
 {
-    BIO *ret;
     FILE *file = NULL;
 
 #  if defined(_WIN32) && defined(CP_UTF8)
@@ -164,6 +163,14 @@ BIO *BIO_new_file(const char *filename, const char *mode)
 #  else
     file = fopen(filename, mode);
 #  endif
+    return (file);
+}
+
+BIO *BIO_new_file(const char *filename, const char *mode)
+{
+    BIO  *ret;
+    FILE *file = file_fopen(filename, mode);
+
     if (file == NULL) {
         SYSerr(SYS_F_FOPEN, get_last_sys_error());
         ERR_add_error_data(5, "fopen('", filename, "','", mode, "')");
@@ -386,7 +393,7 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
         else
             strcat(p, "t");
 #  endif
-        fp = fopen(ptr, p);
+        fp = file_fopen(ptr, p);
         if (fp == NULL) {
             SYSerr(SYS_F_FOPEN, get_last_sys_error());
             ERR_add_error_data(5, "fopen('", ptr, "','", p, "')");


More information about the openssl-commits mailing list