X-Git-Url: https://git.openssl.org/gitweb/?a=blobdiff_plain;f=e_os.h;h=3e7a13f94d1cc0076362c8279ea3b172b5480fe4;hb=e1f946630f06c2d3a112022472bb13a1586f599f;hp=1db29f601cdbd7657adda3ca338b654557d44ebb;hpb=0e97f1e1a7f43be3a5e5c6256fe6bcb90caf9e01;p=openssl.git diff --git a/e_os.h b/e_os.h index 1db29f601c..3e7a13f94d 100644 --- a/e_os.h +++ b/e_os.h @@ -1,15 +1,16 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * - * Licensed under the OpenSSL license (the "License"). You may not use + * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ -#ifndef HEADER_E_OS_H -# define HEADER_E_OS_H +#ifndef OSSL_E_OS_H +# define OSSL_E_OS_H +# include # include # include @@ -21,83 +22,14 @@ * outside; this file e_os.h is not part of the exported interface. */ -#ifdef __cplusplus -extern "C" { -#endif - -/* Used to checking reference counts, most while doing perl5 stuff :-) */ -# if defined(OPENSSL_NO_STDIO) -# if defined(REF_PRINT) -# error "REF_PRINT requires stdio" -# endif -# endif - -/* - * Format specifier for printing size_t. Original conundrum was to - * get it working with -Wformat [-Werror], which can be considered - * overzealous, 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) -# else -# define REF_ASSERT_ISNT(i) -# endif -# ifdef REF_PRINT -# define REF_PRINT_COUNT(a, b) \ - fprintf(stderr, "%p:%4d:%s\n", b, b->references, a) -# else -# define REF_PRINT_COUNT(a, b) -# endif - -# define OPENSSL_CONF "openssl.cnf" - -# ifndef DEVRANDOM -/* - * 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" -# endif -# if !defined(OPENSSL_NO_EGD) && !defined(DEVRANDOM_EGD) -/* - * 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 randomness. - */ -# define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy" -# endif - # if defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_UEFI) -# define NO_SYS_PARAM_H # define NO_CHMOD # define NO_SYSLOG # endif # define get_last_sys_error() errno # define clear_sys_error() errno=0 +# define set_sys_error(e) errno=(e) /******************************************************************** The Microsoft section @@ -113,11 +45,12 @@ extern "C" { # endif # ifdef WIN32 -# define NO_SYS_UN_H # undef get_last_sys_error # undef clear_sys_error +# undef set_sys_error # define get_last_sys_error() GetLastError() # define clear_sys_error() SetLastError(0) +# define set_sys_error(e) SetLastError(e) # if !defined(WINNT) # define WIN_CONSOLE_BUG # endif @@ -129,14 +62,9 @@ extern "C" { # ifdef __DJGPP__ # include # include -# include -# include -# include -# include # define _setmode setmode # define _O_TEXT O_TEXT # define _O_BINARY O_BINARY -# define HAS_LFN_SUPPORT(name) (pathconf((name), _PC_NAME_MAX) > 12) # undef DEVRANDOM_EGD /* Neither MS-DOS nor FreeDOS provide 'egd' sockets. */ # undef DEVRANDOM # define DEVRANDOM "/dev/urandom\x24" @@ -153,7 +81,6 @@ extern "C" { # if !defined(WINNT) && !defined(__DJGPP__) # define NO_SYSLOG # endif -# define NO_DIRENT # ifdef WINDOWS # if !defined(_WIN32_WCE) && !defined(_WIN32_WINNT) @@ -203,14 +130,6 @@ static __inline unsigned int _strlen31(const char *str) } # endif # include -# if defined(_MSC_VER) && _MSC_VER<=1200 && defined(_MT) && defined(isspace) - /* compensate for bug in VC6 ctype.h */ -# undef isspace -# undef isdigit -# undef isalnum -# undef isupper -# undef isxdigit -# endif # if defined(_MSC_VER) && !defined(_WIN32_WCE) && !defined(_DLL) && defined(stdin) # if _MSC_VER>=1300 && _MSC_VER<1600 # undef stdin @@ -270,6 +189,12 @@ extern FILE *_imp___iob; # else /* The non-microsoft world */ +# if defined(OPENSSL_SYS_VXWORKS) +# include +# else +# include +# endif + # ifdef OPENSSL_SYS_VMS # define VMS 1 /* @@ -302,7 +227,7 @@ extern FILE *_imp___iob; Finally, we add the VMS C facility code 0x35a000, because there are some programs, such as Perl, that will reinterpret the code back to something - POSIXly. 'man perlvms' explains it further. + POSIX. 'man perlvms' explains it further. NOTE: the perlvms manual wants to turn all codes 2 to 255 into success codes (status type = 1). I couldn't disagree more. Fortunately, the @@ -311,21 +236,12 @@ extern FILE *_imp___iob; */ # define EXIT(n) exit((n) ? (((n) << 3) | 2 | 0x10000000 | 0x35a000) : 1) -# define NO_SYS_PARAM_H -# define NO_SYS_UN_H - # define DEFAULT_HOME "SYS$LOGIN:" # else /* !defined VMS */ -# ifdef OPENSSL_UNISTD -# include OPENSSL_UNISTD -# else -# include -# endif -# ifndef NO_SYS_TYPES_H -# include -# endif +# include +# include # ifdef OPENSSL_SYS_WIN32_CYGWIN # include # include @@ -342,7 +258,7 @@ extern FILE *_imp___iob; # if defined(OPENSSL_SYS_WINDOWS) # define strcasecmp _stricmp # define strncasecmp _strnicmp -# if (_MSC_VER >= 1310) +# if (_MSC_VER >= 1310) && !defined(_WIN32_WCE) # define open _open # define fdopen _fdopen # define close _close @@ -379,12 +295,79 @@ struct servent *getservbyname(const char *name, const char *proto); # endif /* end vxworks */ -#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -# define CRYPTO_memcmp memcmp -#endif +/* ----------------------------- HP NonStop -------------------------------- */ +/* Required to support platform variant without getpid() and pid_t. */ +# ifdef __TANDEM +# include +# include +# define getservbyname(name,proto) getservbyname((char*)name,proto) +# define gethostbyname(name) gethostbyname((char*)name) +# define ioctlsocket(a,b,c) ioctl(a,b,c) +# ifdef NO_GETPID +inline int nssgetpid(); +# ifndef NSSGETPID_MACRO +# define NSSGETPID_MACRO +# include +# include + inline int nssgetpid() + { + short phandle[10]={0}; + union pseudo_pid { + struct { + short cpu; + short pin; + } cpu_pin ; + int ppid; + } ppid = { 0 }; + PROCESSHANDLE_GETMINE_(phandle); + PROCESSHANDLE_DECOMPOSE_(phandle, &ppid.cpu_pin.cpu, &ppid.cpu_pin.pin); + return ppid.ppid; + } +# define getpid(a) nssgetpid(a) +# endif /* NSSGETPID_MACRO */ +# endif /* NO_GETPID */ +/*# define setsockopt(a,b,c,d,f) setsockopt(a,b,c,(char*)d,f)*/ +/*# define getsockopt(a,b,c,d,f) getsockopt(a,b,c,(char*)d,f)*/ +/*# define connect(a,b,c) connect(a,(struct sockaddr *)b,c)*/ +/*# define bind(a,b,c) bind(a,(struct sockaddr *)b,c)*/ +/*# define sendto(a,b,c,d,e,f) sendto(a,(char*)b,c,d,(struct sockaddr *)e,f)*/ +# if defined(OPENSSL_THREADS) && !defined(_PUT_MODEL_) + /* + * HPNS SPT threads + */ +# define SPT_THREAD_SIGNAL 1 +# define SPT_THREAD_AWARE 1 +# include +# undef close +# define close spt_close +/* +# define get_last_socket_error() errno +# define clear_socket_error() errno=0 +# define ioctlsocket(a,b,c) ioctl(a,b,c) +# define closesocket(s) close(s) +# define readsocket(s,b,n) read((s),(char*)(b),(n)) +# define writesocket(s,b,n) write((s),(char*)(b),(n) +*/ +# define accept(a,b,c) accept(a,(struct sockaddr *)b,c) +# define recvfrom(a,b,c,d,e,f) recvfrom(a,b,(socklen_t)c,d,e,f) +# endif +# endif -#ifdef __cplusplus -} -#endif +# ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +# define CRYPTO_memcmp memcmp +# endif + +# ifndef OPENSSL_NO_SECURE_MEMORY + /* unistd.h defines _POSIX_VERSION */ +# if (defined(OPENSSL_SYS_UNIX) \ + && ( (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L) \ + || defined(__sun) || defined(__hpux) || defined(__sgi) \ + || defined(__osf__) )) \ + || defined(_WIN32) + /* secure memory is implemented */ +# else +# define OPENSSL_NO_SECURE_MEMORY +# endif +# endif #endif