wolfSSL / wolfssl

The wolfSSL library is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3 and DTLS 1.3!
https://www.wolfssl.com
GNU General Public License v2.0
2.36k stars 834 forks source link

20241105-c89-expansion-etc #8164

Closed douzzer closed 1 week ago

douzzer commented 2 weeks ago

assorted cleanups and refactors for C89 conformance, codespell and check-source-text, and consistent heap shim usage.

.github/workflows/codespell.yml: remove */README_jp.txt from "skip" list.

IDE/Renesas/cs+/Projects/t4_demo/README_jp.txt: convert from SHIFT_JIS to UTF-8.

cmake/options.h.in: use #cmakedefine HAVE_PTHREAD 1 to avoid conflict with config.h.

configure.ac: add --enable-c89, and remove !ENABLED_OPENSSLEXTRA dependency from AM_CONDITIONAL([BUILD_CRYPTONLY],...).

wolfcrypt/src/asn.c: refactor SetOthername() for efficiency, and add PRAGMA_GCC to suppress false positive -Wstringop-overflow associated with -fstack-protector.

wolfssl/wolfcrypt/rsa.h: add WC_ prefixes to RSA_PKCS1_PADDING_SIZE and RSA_PKCS1_OAEP_PADDING_SIZE, and define unprefixed compat aliases only if !OPENSSL_COEXIST.

wolfssl/wolfcrypt/types.h:

#ifdef WOLF_C89, #define WC_BITFIELD unsigned; enhance WOLF_ENUM_DUMMY_LAST_ELEMENT() to include the line number, to construct unique labels given a per-filename argument, to accommodate anonymous enums.

examples/asn1/asn1.c: examples/client/client.c: examples/pem/pem.c: examples/server/server.c: wolfcrypt/src/sp_dsp32.c: wolfcrypt/src/wc_port.c: wolfssl/test.h:

use XMALLOC/XREALLOC/XFREE consistently, not malloc/realloc/free.

wolfcrypt/benchmark/benchmark.c: wolfcrypt/src/memory.c: wolfcrypt/test/test.c: wolfssl/wolfcrypt/mem_track.h: wolfssl/wolfcrypt/settings.h: wolfssl/wolfcrypt/types.h:

annotate intentional native heap access with /* native heap */.

wolfcrypt/src/asn.c: wolfssl/callbacks.h: wolfssl/openssl/ec.h: wolfssl/openssl/ssl.h: wolfssl/wolfcrypt/hpke.h: wolfssl/wolfcrypt/types.h:

fix enum trailing commas.

wolfssl/openssl/ec.h: wolfssl/openssl/evp.h: wolfssl/openssl/rsa.h: wolfssl/openssl/ssl.h:

use WC_BITFIELD in bitfield elements, not byte or word16, to allow for pedantic C89 conformant builds.

wolfssl/openssl/ec.h: wolfssl/openssl/evp.h: wolfssl/openssl/pem.h: wolfssl/openssl/ssl.h: wolfssl/wolfcrypt/logging.h:

avoid variadic macros wherever possible, and where unavoidable, #ifdef WOLF_NO_VARIADIC_MACROS, define them with empty arg lists, rather than ..., to support Watcom compiler.

wolfssl/wolfcrypt/settings.h: if defined(__WATCOMC__), define WOLF_NO_VARIADIC_MACROS.

tested with wolfssl-multi-test.sh ... super-quick-check

see also #8148 -- this fixes the -Wstringop-overflow reported there.