[openssl-commits] [openssl] master update

Rich Salz rsalz at openssl.org
Mon Sep 21 21:31:52 UTC 2015


The branch master has been updated
       via  ff03599a2f518dbdf13bca0bb0208e431b892fe9 (commit)
      from  4cd94416a452c3a3e0df24c297f7d2f0e6d5bb5f (commit)


- Log -----------------------------------------------------------------
commit ff03599a2f518dbdf13bca0bb0208e431b892fe9
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>

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

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 cebad75..8f22ef7 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 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