From: Frédéric Lécaille Date: Thu, 16 Jun 2022 15:53:46 +0000 (+0200) Subject: BUILD: quic: Wrong HKDF label constant variable initializations X-Git-Tag: v2.7-dev1~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b1cb95858112880adcaa3aa0e2e6809a537a71c8;p=thirdparty%2Fhaproxy.git BUILD: quic: Wrong HKDF label constant variable initializations Non constant expressions were used to initialize constant variables leading to such compilation errors: src/xprt_quic.c:66:3: error: initializer element is not a constant expression .key_label_len = strlen(QUIC_HKDF_KEY_LABEL_V1), Reproduced with CC=gcc-4.9 compilation option. Fix using macros for each HKDF label. --- diff --git a/src/xprt_quic.c b/src/xprt_quic.c index 9e2b066bdf..678d48ed35 100644 --- a/src/xprt_quic.c +++ b/src/xprt_quic.c @@ -63,13 +63,13 @@ const struct quic_version quic_versions[] = { .initial_salt = initial_salt_draft_29, .initial_salt_len = sizeof initial_salt_draft_29, .key_label = (const unsigned char *)QUIC_HKDF_KEY_LABEL_V1, - .key_label_len = strlen(QUIC_HKDF_KEY_LABEL_V1), + .key_label_len = sizeof(QUIC_HKDF_KEY_LABEL_V1) - 1, .iv_label = (const unsigned char *)QUIC_HKDF_IV_LABEL_V1, - .iv_label_len = strlen(QUIC_HKDF_IV_LABEL_V1), + .iv_label_len = sizeof(QUIC_HKDF_IV_LABEL_V1) - 1, .hp_label = (const unsigned char *)QUIC_HKDF_HP_LABEL_V1, - .hp_label_len = strlen(QUIC_HKDF_HP_LABEL_V1), + .hp_label_len = sizeof(QUIC_HKDF_HP_LABEL_V1) - 1, .ku_label = (const unsigned char *)QUIC_HKDF_KU_LABEL_V1, - .ku_label_len = strlen(QUIC_HKDF_KU_LABEL_V1), + .ku_label_len = sizeof(QUIC_HKDF_KU_LABEL_V1) - 1, .retry_tag_key = (const unsigned char *)QUIC_TLS_RETRY_KEY_DRAFT, .retry_tag_nonce = (const unsigned char *)QUIC_TLS_RETRY_NONCE_DRAFT, }, @@ -78,13 +78,13 @@ const struct quic_version quic_versions[] = { .initial_salt = initial_salt_v1, .initial_salt_len = sizeof initial_salt_v1, .key_label = (const unsigned char *)QUIC_HKDF_KEY_LABEL_V1, - .key_label_len = strlen(QUIC_HKDF_KEY_LABEL_V1), + .key_label_len = sizeof(QUIC_HKDF_KEY_LABEL_V1) - 1, .iv_label = (const unsigned char *)QUIC_HKDF_IV_LABEL_V1, - .iv_label_len = strlen(QUIC_HKDF_IV_LABEL_V1), + .iv_label_len = sizeof(QUIC_HKDF_IV_LABEL_V1) - 1, .hp_label = (const unsigned char *)QUIC_HKDF_HP_LABEL_V1, - .hp_label_len = strlen(QUIC_HKDF_HP_LABEL_V1), + .hp_label_len = sizeof(QUIC_HKDF_HP_LABEL_V1) - 1, .ku_label = (const unsigned char *)QUIC_HKDF_KU_LABEL_V1, - .ku_label_len = strlen(QUIC_HKDF_KU_LABEL_V1), + .ku_label_len = sizeof(QUIC_HKDF_KU_LABEL_V1) - 1, .retry_tag_key = (const unsigned char *)QUIC_TLS_RETRY_KEY_V1, .retry_tag_nonce = (const unsigned char *)QUIC_TLS_RETRY_NONCE_V1, }, @@ -93,13 +93,13 @@ const struct quic_version quic_versions[] = { .initial_salt = initial_salt_v2_draft, .initial_salt_len = sizeof initial_salt_v2_draft, .key_label = (const unsigned char *)QUIC_HKDF_KEY_LABEL_V2, - .key_label_len = strlen(QUIC_HKDF_KEY_LABEL_V2), + .key_label_len = sizeof(QUIC_HKDF_KEY_LABEL_V2) - 1, .iv_label = (const unsigned char *)QUIC_HKDF_IV_LABEL_V2, - .iv_label_len = strlen(QUIC_HKDF_IV_LABEL_V2), + .iv_label_len = sizeof(QUIC_HKDF_IV_LABEL_V2) - 1, .hp_label = (const unsigned char *)QUIC_HKDF_HP_LABEL_V2, - .hp_label_len = strlen(QUIC_HKDF_HP_LABEL_V2), + .hp_label_len = sizeof(QUIC_HKDF_HP_LABEL_V2) - 1, .ku_label = (const unsigned char *)QUIC_HKDF_KU_LABEL_V2, - .ku_label_len = strlen(QUIC_HKDF_KU_LABEL_V2), + .ku_label_len = sizeof(QUIC_HKDF_KU_LABEL_V2) - 1, .retry_tag_key = (const unsigned char *)QUIC_TLS_RETRY_KEY_V2_DRAFT, .retry_tag_nonce = (const unsigned char *)QUIC_TLS_RETRY_NONCE_V2_DRAFT, },