/*
- * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* 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
* outside; this file e_os.h is not part of the exported interface.
*/
-# 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/hwrng", "/dev/srandom"
-# if defined(__linux) && !defined(__ANDROID__)
-# ifndef DEVRANDOM_WAIT
-# define DEVRANDOM_WAIT "/dev/random"
-# endif
-/*
- * Linux kernels 4.8 and later changes how their random device works and there
- * is no reliable way to tell that /dev/urandom has been seeded -- getentropy(2)
- * should be used instead.
- */
-# ifndef DEVRANDOM_SAFE_KERNEL
-# define DEVRANDOM_SAFE_KERNEL 4, 8
-# endif
-/*
- * Some operating systems do not permit select(2) on their random devices,
- * defining this to zero will force the used of read(2) to extract one byte
- * from /dev/random.
- */
-# ifndef DEVRANDM_WAIT_USE_SELECT
-# define DEVRANDM_WAIT_USE_SELECT 1
-# endif
-/*
- * Define the shared memory identifier used to indicate if the operating
- * system has properly seeded the DEVRANDOM source.
- */
-# ifndef OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID
-# define OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID 114
-# endif
-
-# endif
-# 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_CHMOD
# define NO_SYSLOG
# 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"
*/
# include <winsock2.h>
# include <ws2tcpip.h>
+ /*
+ * Clang-based C++Builder 10.3.3 toolchains cannot find C inline
+ * definitions at link-time. This header defines WspiapiLoad() as an
+ * __inline function. https://quality.embarcadero.com/browse/RSP-33806
+ */
+# if !defined(__BORLANDC__) || !defined(__clang__)
+# include <wspiapi.h>
+# endif
/* yes, they have to be #included prior to <windows.h> */
# endif
# include <windows.h>
# 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
# endif
/* end vxworks */
+/* ----------------------------- HP NonStop -------------------------------- */
+/* Required to support platform variant without getpid() and pid_t. */
+# if defined(__TANDEM) && defined(_GUARDIAN_TARGET)
+# include <strings.h>
+# include <netdb.h>
+# 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 <cextdecs.h(PROCESSHANDLE_GETMINE_)>
+# include <cextdecs.h(PROCESSHANDLE_DECOMPOSE_)>
+ 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 <spthread.h>
+# 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 FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
# define CRYPTO_memcmp memcmp
# endif
-/* unistd.h defines _POSIX_VERSION */
-# if !defined(OPENSSL_NO_SECURE_MEMORY) && defined(OPENSSL_SYS_UNIX) \
- && ( (defined(_POSIX_VERSION) && _POSIX_VERSION >= 200112L) \
- || defined(__sun) || defined(__hpux) || defined(__sgi) \
- || defined(__osf__) )
-# define OPENSSL_SECURE_MEMORY /* secure memory is implemented */
+# 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