diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index 94eb7e2810..db6a1b1799 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -239,7 +239,7 @@ # from these directories. push @{$unified_info{includes_extra}->{$obj}}, qw(./quic); } - foreach (grep /\[\.ssl\.(?:quic|record|statem)\].*?\.o$/, keys %{$unified_info{sources}}) { + foreach (grep /\[\.ssl\.(?:quic|record|statem|rio)\].*?\.o$/, keys %{$unified_info{sources}}) { my $obj = platform->obj($_); # Most of the files in [.ssl.record] and [.ssl.statem] include # "../ssl_local.h", which includes things like "record/record.h". diff --git a/apps/lib/http_server.c b/apps/lib/http_server.c index bca2e7110d..0bdeaeb5f7 100644 --- a/apps/lib/http_server.c +++ b/apps/lib/http_server.c @@ -200,7 +200,7 @@ BIO *http_server_init(const char *prog, const char *port, int verb) int port_num; char name[40]; - snprintf(name, sizeof(name), "*:%s", port); /* port may be "0" */ + BIO_snprintf(name, sizeof(name), "*:%s", port); /* port may be "0" */ if (verb >= 0 && !log_set_verbosity(prog, verb)) return NULL; bufbio = BIO_new(BIO_f_buffer()); diff --git a/crypto/asn1/a_time.c b/crypto/asn1/a_time.c index 96ee63d310..49548235ad 100644 --- a/crypto/asn1/a_time.c +++ b/crypto/asn1/a_time.c @@ -14,6 +14,8 @@ * generalTime GeneralizedTime } */ +#define _XOPEN_SOURCE /* To get a definition of timezone */ + #include #include #include "crypto/asn1.h" diff --git a/crypto/conf/conf_lib.c b/crypto/conf/conf_lib.c index 99e9f8c987..13e2723f80 100644 --- a/crypto/conf/conf_lib.c +++ b/crypto/conf/conf_lib.c @@ -7,6 +7,8 @@ * https://www.openssl.org/source/license.html */ +#define _XOPEN_SOURCE_EXTENDED /* To get a definition of strdup() */ + #include "internal/e_os.h" #include #include diff --git a/crypto/conf/conf_sap.c b/crypto/conf/conf_sap.c index 3019bcf31a..9c78f46581 100644 --- a/crypto/conf/conf_sap.c +++ b/crypto/conf/conf_sap.c @@ -7,6 +7,8 @@ * https://www.openssl.org/source/license.html */ +#define _XOPEN_SOURCE_EXTENDED /* To get a definition of strdup() */ + #include #include #include "internal/cryptlib.h" diff --git a/ssl/quic/json_enc.c b/ssl/quic/json_enc.c index e87ce900d4..3e9f715dfa 100644 --- a/ssl/quic/json_enc.c +++ b/ssl/quic/json_enc.c @@ -9,6 +9,7 @@ #include "internal/json_enc.h" #include "internal/nelem.h" +#include "internal/numbers.h" #include #include @@ -602,10 +603,19 @@ void ossl_json_f64(OSSL_JSON_ENC *json, double value) if (!json_pre_item(json)) return; - if (isnan(value) || isinf(value)) { - json_raise_error(json); - return; +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + { + int checks = isnan(value); +# if !defined(OPENSSL_SYS_VMS) + checks |= isinf(value); +# endif + + if (checks) { + json_raise_error(json); + return; + } } +#endif BIO_snprintf(buf, sizeof(buf), "%1.17g", value); json_write_str(json, buf); diff --git a/test/json_test.c b/test/json_test.c index 3e7d59e907..33d9522dd0 100644 --- a/test/json_test.c +++ b/test/json_test.c @@ -144,6 +144,15 @@ typedef void (*fp_pz_type)(OSSL_JSON_ENC *, const void *, size_t); return &script_info; \ } +#ifdef OPENSSL_SYS_VMS +/* + * The VMS C compiler recognises \u in strings, and emits a warning, which + * stops the build. Because we think we know what we're doing, we change that + * particular message to be merely informational. + */ +# pragma message informational UCNNOMAP +#endif + #define END_SCRIPT_EXPECTING_S(s) END_SCRIPT_EXPECTING(s, SIZE_MAX) #define END_SCRIPT_EXPECTING_Q(s) END_SCRIPT_EXPECTING(#s, sizeof(#s) - 1)