X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=e_os.h;h=7138c7a181d19cb6c226c564bba2659d31191b1e;hp=83b024add013bc973b317df01d77a2cbf12ab9e5;hb=e89f5fb37014514f0c273980c3d6cbedfa73f862;hpb=b6cff313cbb1d0381b329fe4f6a8f009cdb270e4 diff --git a/e_os.h b/e_os.h index 83b024add0..7138c7a181 100644 --- a/e_os.h +++ b/e_os.h @@ -13,6 +13,7 @@ # include # include +# include /* * contains what we can justify to make visible to the * outside; this file e_os.h is not part of the exported interface. @@ -29,6 +30,33 @@ extern "C" { # endif # endif +/* + * Format specifier for printing size_t. Original conundrum was to + * get it working with -Wformat [-Werror], which can be considered + * overzelaous, especially in multi-platform context, but it's + * conscious choice... + */ +# if defined(_WIN64) +# define OSSLzu "I64u" /* One would expect _WIN{64|32} cases after + * __STDC_VERSION__, but there are corner + * cases of MinGW compilers that link with + * non-compliant MSVCRT.DLL... */ +# elif defined(_WIN32) +# define OSSLzu "u" +# elif defined(__VMS) +# define OSSLzu "u" /* VMS suffers from similar problem as MinGW, + * i.e. C RTL falling behind compiler. Recall + * that sizeof(size_t)==4 even in LP64 case. */ +# elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +# define OSSLzu "zu" +# elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__==4 +# define OSSLzu "u" /* 'lu' should have worked, but when generating + * 32-bit code gcc still complains :-( */ +# else +# define OSSLzu "lu" /* To see that is works recall what does L + * stand for in ILP32 and LP64 */ +# endif + # if !defined(NDEBUG) && !defined(OPENSSL_NO_STDIO) # define REF_ASSERT_ISNT(test) \ (void)((test) ? (OPENSSL_die("refcount error", __FILE__, __LINE__), 1) : 0) @@ -47,7 +75,7 @@ extern "C" { # ifndef DEVRANDOM /* - * set this to a comma-separated list of 'random' device files to try out. My + * set this to a comma-separated list of 'random' device files to try out. By * default, we will try to read at least one of these files */ # define DEVRANDOM "/dev/urandom","/dev/random","/dev/srandom" @@ -56,12 +84,12 @@ extern "C" { /* * set this to a comma-separated list of 'egd' sockets to try out. These * sockets will be tried in the order listed in case accessing the device - * files listed in DEVRANDOM did not return enough entropy. + * files listed in DEVRANDOM did not return enough randomness. */ # define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy" # endif -# if defined(OPENSSL_SYS_VXWORKS) +# if defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_UEFI) # define NO_SYS_PARAM_H # define NO_CHMOD # define NO_SYSLOG @@ -325,6 +353,8 @@ extern FILE *_imp___iob; # define NO_SYS_PARAM_H # define NO_SYS_UN_H +# define DEFAULT_HOME "SYS$LOGIN:" + # else /* !defined VMS */ # ifdef OPENSSL_UNISTD @@ -469,12 +499,17 @@ struct servent *PASCAL getservbyname(const char *, const char *); # if defined(OPENSSL_SYS_WINDOWS) # define strcasecmp _stricmp # define strncasecmp _strnicmp -# elif defined(OPENSSL_SYS_VMS) -/* VMS below version 7.0 doesn't have strcasecmp() */ -# include "internal/o_str.h" -# define strcasecmp OPENSSL_strcasecmp -# define strncasecmp OPENSSL_strncasecmp -# define OPENSSL_IMPLEMENTS_strncasecmp +# if (_MSC_VER >= 1310) +# define open _open +# define fdopen _fdopen +# define close _close +# ifndef strdup +# define strdup _strdup +# endif +# define unlink _unlink +# endif +# else +# include # endif /* vxworks */ @@ -504,14 +539,28 @@ struct servent *getservbyname(const char *name, const char *proto); # endif /* end vxworks */ -/* haiku */ -# if defined(OPENSSL_SYS_HAIKU) -# include -# include -# endif -/* end haiku */ +#define OSSL_NELEM(x) (sizeof(x)/sizeof((x)[0])) + +#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +# define CRYPTO_memcmp memcmp +#endif + +#ifdef NDEBUG +# define ossl_assert(x) (int)(x) +#else +__owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, + const char *file, int line) +{ + if (!expr) + OPENSSL_die(exprstr, file, line); + + return expr; +} -#define OSSL_NELEM(x) (sizeof(x)/sizeof(x[0])) +# define ossl_assert(x) ossl_assert_int((int)(x), "Assertion failed: "#x, \ + __FILE__, __LINE__) + +#endif #ifdef __cplusplus }