Fix up macros. Macros need a healthy dose of parentheses to avoid expression-level misparses. Most of this comes from the clang-tidy CL here: https://android-review.googlesource.com/c/235696/ Also switch most of the macros to use do { ... } while (0) to avoid all the excessive comma operators and statement-level misparses. Change-Id: I4c2ee51e347d2aa8c74a2d82de63838b03bbb0f9 Reviewed-on: https://boringssl-review.googlesource.com/11660 Commit-Queue: David Benjamin <davidben@google.com> Reviewed-by: Adam Langley <agl@google.com>
diff --git a/include/openssl/err.h b/include/openssl/err.h index cac50e0..f6efa12 100644 --- a/include/openssl/err.h +++ b/include/openssl/err.h
@@ -467,7 +467,7 @@ #define ERR_R_OVERFLOW (5 | ERR_R_FATAL) #define ERR_PACK(lib, reason) \ - (((((uint32_t)lib) & 0xff) << 24) | ((((uint32_t)reason) & 0xfff))) + (((((uint32_t)(lib)) & 0xff) << 24) | ((((uint32_t)(reason)) & 0xfff))) #define ERR_GET_LIB(packed_error) ((int)(((packed_error) >> 24) & 0xff)) #define ERR_GET_FUNC(packed_error) 0
diff --git a/include/openssl/ssl.h b/include/openssl/ssl.h index 6e0cecc..0d78754 100644 --- a/include/openssl/ssl.h +++ b/include/openssl/ssl.h
@@ -2898,7 +2898,7 @@ /* SSL_MAX_CERT_LIST_DEFAULT is the default maximum length, in bytes, of a peer * certificate chain. */ -#define SSL_MAX_CERT_LIST_DEFAULT 1024 * 100 +#define SSL_MAX_CERT_LIST_DEFAULT (1024 * 100) /* SSL_CTX_get_max_cert_list returns the maximum length, in bytes, of a peer * certificate chain accepted by |ctx|. */ @@ -3343,14 +3343,14 @@ /* SSL_get_server_tmp_key returns zero. */ OPENSSL_EXPORT int *SSL_get_server_tmp_key(SSL *ssl, EVP_PKEY **out_key); -#define SSL_set_app_data(s, arg) (SSL_set_ex_data(s, 0, (char *)arg)) +#define SSL_set_app_data(s, arg) (SSL_set_ex_data(s, 0, (char *)(arg))) #define SSL_get_app_data(s) (SSL_get_ex_data(s, 0)) #define SSL_SESSION_set_app_data(s, a) \ - (SSL_SESSION_set_ex_data(s, 0, (char *)a)) + (SSL_SESSION_set_ex_data(s, 0, (char *)(a))) #define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s, 0)) #define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx, 0)) #define SSL_CTX_set_app_data(ctx, arg) \ - (SSL_CTX_set_ex_data(ctx, 0, (char *)arg)) + (SSL_CTX_set_ex_data(ctx, 0, (char *)(arg))) #define OpenSSL_add_ssl_algorithms() SSL_library_init() #define SSLeay_add_ssl_algorithms() SSL_library_init()
diff --git a/include/openssl/x509.h b/include/openssl/x509.h index 51be320..8204486 100644 --- a/include/openssl/x509.h +++ b/include/openssl/x509.h
@@ -286,7 +286,7 @@ /* standard trust ids */ -#define X509_TRUST_DEFAULT -1 /* Only valid in purpose settings */ +#define X509_TRUST_DEFAULT (-1) /* Only valid in purpose settings */ #define X509_TRUST_COMPAT 1 #define X509_TRUST_SSL_CLIENT 2
diff --git a/include/openssl/x509_vfy.h b/include/openssl/x509_vfy.h index 0a45aad..1182bc2 100644 --- a/include/openssl/x509_vfy.h +++ b/include/openssl/x509_vfy.h
@@ -110,7 +110,7 @@ */ /* The following are legacy constants that should not be used. */ -#define X509_LU_RETRY -1 +#define X509_LU_RETRY (-1) #define X509_LU_FAIL 0 #define X509_LU_X509 1
diff --git a/include/openssl/x509v3.h b/include/openssl/x509v3.h index d25a125..4754f71 100644 --- a/include/openssl/x509v3.h +++ b/include/openssl/x509v3.h
@@ -230,7 +230,7 @@ /* All existing reasons */ #define CRLDP_ALL_REASONS 0x807f -#define CRL_REASON_NONE -1 +#define CRL_REASON_NONE (-1) #define CRL_REASON_UNSPECIFIED 0 #define CRL_REASON_KEY_COMPROMISE 1 #define CRL_REASON_CA_COMPROMISE 2 @@ -376,8 +376,8 @@ /* onlysomereasons present */ #define IDP_REASONS 0x40 -#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \ -",name:", val->name, ",value:", val->value); +#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", (val)->section, \ +",name:", (val)->name, ",value:", (val)->value); #define X509V3_set_ctx_test(ctx) \ X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, CTX_TEST) @@ -389,7 +389,7 @@ (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \ (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \ NULL, NULL, \ - (void *)table} + (void *)(table)} #define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \ 0,0,0,0, \