From: Randall S. Becker Date: Fri, 26 Mar 2021 12:34:49 +0000 (-0600) Subject: Corrected missing definitions from NonStop SPT build. X-Git-Tag: openssl-3.0.0-alpha14~55 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=650c66873793bed505802f316b15772a0f887743;p=thirdparty%2Fopenssl.git Corrected missing definitions from NonStop SPT build. This change includes swapping the PUT and SPT configuration, includes of sys/stat.h and sys/types.h in the correct scope to be picked up by SPT definitions. Fixes: #14698 Fixes: #14734 CLA: The author has the permission to grant the OpenSSL Team the right to use this change. Signed-off-by: Randall S. Becker Reviewed-by: Richard Levitte Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/14736) --- diff --git a/Configurations/50-nonstop.conf b/Configurations/50-nonstop.conf index 57926747887..7524c500162 100644 --- a/Configurations/50-nonstop.conf +++ b/Configurations/50-nonstop.conf @@ -168,13 +168,13 @@ 'nonstop-model-put' => { template => 1, defines => ['_PUT_MODEL_', - '_REENTRANT', '_ENABLE_FLOSS_THREADS'], + '_REENTRANT', '_THREAD_SUPPORT_FUNCTIONS'], ex_libs => '-lput', }, 'nonstop-model-spt' => { template => 1, defines => ['_SPT_MODEL_', - '_REENTRANT', '_THREAD_SUPPORT_FUNCTIONS'], + '_REENTRANT', '_ENABLE_FLOSS_THREADS'], ex_libs => '-lspt', }, diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c index e8407425444..bfb718753be 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c @@ -13,6 +13,8 @@ #include #ifdef __TANDEM # include /* strcasecmp */ +# include /* needed for stat.h */ +# include /* struct stat */ #endif #include "internal/cryptlib.h" #include "internal/o_dir.h" diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c index 655dc71b066..c3246c4c62a 100644 --- a/crypto/rand/randfile.c +++ b/crypto/rand/randfile.c @@ -7,6 +7,15 @@ * https://www.openssl.org/source/license.html */ +#if defined (__TANDEM) && defined (_SPT_MODEL_) +/* + * These definitions have to come first in SPT due to scoping of the + * declarations in c99 associated with SPT use of stat. + */ +# include +# include +#endif + #include "internal/cryptlib.h" #include diff --git a/crypto/ui/ui_openssl.c b/crypto/ui/ui_openssl.c index 42524d42a28..c9cce93d5c3 100644 --- a/crypto/ui/ui_openssl.c +++ b/crypto/ui/ui_openssl.c @@ -127,7 +127,7 @@ # define TTY_set(tty,data) ioctl(tty,TIOCSETP,data) # endif -# if !defined(_LIBC) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) +# if !defined(_LIBC) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VMS) && ! (defined(OPENSSL_SYS_TANDEM) && defined(_SPT_MODEL_)) # include # endif diff --git a/crypto/x509/by_dir.c b/crypto/x509/by_dir.c index 6c0894796bb..258ad518525 100644 --- a/crypto/x509/by_dir.c +++ b/crypto/x509/by_dir.c @@ -7,6 +7,15 @@ * https://www.openssl.org/source/license.html */ +#if defined (__TANDEM) && defined (_SPT_MODEL_) + /* + * These definitions have to come first in SPT due to scoping of the + * declarations in c99 associated with SPT use of stat. + */ +# include +# include +#endif + #include "e_os.h" #include "internal/cryptlib.h" #include diff --git a/e_os.h b/e_os.h index 3e7a13f94d1..a4290cfc65b 100644 --- a/e_os.h +++ b/e_os.h @@ -297,7 +297,7 @@ struct servent *getservbyname(const char *name, const char *proto); /* ----------------------------- HP NonStop -------------------------------- */ /* Required to support platform variant without getpid() and pid_t. */ -# ifdef __TANDEM +# if defined(__TANDEM) && defined(_GUARDIAN_TARGET) # include # include # define getservbyname(name,proto) getservbyname((char*)name,proto) diff --git a/include/internal/cryptlib.h b/include/internal/cryptlib.h index fb46657dba6..ea42447e788 100644 --- a/include/internal/cryptlib.h +++ b/include/internal/cryptlib.h @@ -217,10 +217,18 @@ static ossl_inline void ossl_sleep(unsigned long millis) ts.tv_sec = (long int) (millis / 1000); ts.tv_nsec = (long int) (millis % 1000) * 1000000ul; nanosleep(&ts, NULL); -# elif defined(__TANDEM) && !defined(_REENTRANT) -# include +# elif defined(__TANDEM) +# if !defined(_REENTRANT) +# include /* HPNS does not support usleep for non threaded apps */ PROCESS_DELAY_(millis * 1000); +# elif defined(_SPT_MODEL_) +# include +# include + usleep(millis * 1000); +# else + usleep(millis * 1000); +# endif # else usleep(millis * 1000); # endif diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c index 4e4f9aaceac..cb225b544a1 100644 --- a/ssl/ssl_sess.c +++ b/ssl/ssl_sess.c @@ -8,6 +8,10 @@ * https://www.openssl.org/source/license.html */ +#if defined(__TANDEM) && defined(_SPT_MODEL_) +# include +# include /* timeval */ +#endif #include #include #include diff --git a/ssl/statem/extensions.c b/ssl/statem/extensions.c index 0ce436d0828..2f624c0e64f 100644 --- a/ssl/statem/extensions.c +++ b/ssl/statem/extensions.c @@ -7,6 +7,11 @@ * https://www.openssl.org/source/license.html */ +#if defined(__TANDEM) && defined(_SPT_MODEL_) +# include +# include /* timeval */ +#endif + #include #include "internal/nelem.h" #include "internal/cryptlib.h" diff --git a/ssl/statem/statem.c b/ssl/statem/statem.c index 74c270d002e..3b6e78e3f84 100644 --- a/ssl/statem/statem.c +++ b/ssl/statem/statem.c @@ -7,6 +7,11 @@ * https://www.openssl.org/source/license.html */ +#if defined(__TANDEM) && defined(_SPT_MODEL_) +# include +# include /* timeval */ +#endif + #include "internal/cryptlib.h" #include #include "../ssl_local.h"