bio/bss_file.c: since VS2015 one can't tell apart own and "alien" FILE
pointers, except for minimal std[in|out|err]. Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
@@ -241,7 +241,7 @@ static int file_read(BIO *b, char *out, int outl)
|
|||||||
ret = fread(out, 1, (int)outl, (FILE *)b->ptr);
|
ret = fread(out, 1, (int)outl, (FILE *)b->ptr);
|
||||||
if (ret == 0
|
if (ret == 0
|
||||||
&& (b->flags & BIO_FLAGS_UPLINK) ? UP_ferror((FILE *)b->ptr) :
|
&& (b->flags & BIO_FLAGS_UPLINK) ? UP_ferror((FILE *)b->ptr) :
|
||||||
ferror((FILE *)b->ptr)) {
|
ferror((FILE *)b->ptr)) {
|
||||||
SYSerr(SYS_F_FREAD, get_last_sys_error());
|
SYSerr(SYS_F_FREAD, get_last_sys_error());
|
||||||
BIOerr(BIO_F_FILE_READ, ERR_R_SYS_LIB);
|
BIOerr(BIO_F_FILE_READ, ERR_R_SYS_LIB);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
@@ -308,8 +308,11 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr)
|
|||||||
# if defined(__MINGW32__) && defined(__MSVCRT__) && !defined(_IOB_ENTRIES)
|
# if defined(__MINGW32__) && defined(__MSVCRT__) && !defined(_IOB_ENTRIES)
|
||||||
# define _IOB_ENTRIES 20
|
# define _IOB_ENTRIES 20
|
||||||
# endif
|
# endif
|
||||||
# if defined(_IOB_ENTRIES)
|
|
||||||
/* Safety net to catch purely internal BIO_set_fp calls */
|
/* Safety net to catch purely internal BIO_set_fp calls */
|
||||||
|
# if defined(_MSC_VER) && _MSC_VER>=1900
|
||||||
|
if (ptr == stdin || ptr == stdout || ptr == stderr)
|
||||||
|
BIO_clear_flags(b, BIO_FLAGS_UPLINK);
|
||||||
|
# elif defined(_IOB_ENTRIES)
|
||||||
if ((size_t)ptr >= (size_t)stdin &&
|
if ((size_t)ptr >= (size_t)stdin &&
|
||||||
(size_t)ptr < (size_t)(stdin + _IOB_ENTRIES))
|
(size_t)ptr < (size_t)(stdin + _IOB_ENTRIES))
|
||||||
BIO_clear_flags(b, BIO_FLAGS_UPLINK);
|
BIO_clear_flags(b, BIO_FLAGS_UPLINK);
|
||||||
|
|||||||
Reference in New Issue
Block a user