Skip to content

Commit a96e0f1

Browse files
committed
allow to suppress warnings about (individual) X-Forwarded headers
see #1333; through environment variable OIDC_CHECK_X_FORWARDED_HDR_LOG_DISABLE session.c: avoid gcc 14 warning: '%s' directive argument is null [-Wformat-overflow=] Signed-off-by: Hans Zandbelt <hans.zandbelt@openidc.com>
1 parent b3dea62 commit a96e0f1

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

ChangeLog

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
06/25/2025
2+
- allow to suppress warnings about (individual) X-Forwarded headers; see #1333
3+
through environment variable OIDC_CHECK_X_FORWARDED_HDR_LOG_DISABLE, e.g.:
4+
SetEnvIfExpr true OIDC_CHECK_X_FORWARDED_HDR_LOG_DISABLE=X-Forwarded-Proto
5+
16
06/23/2025
27
- release 2.4.17.1
38

src/cfg/cfg.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,8 @@ const char *oidc_cmd_session_type_set(cmd_parms *cmd, void *ptr, const char *arg
195195
} else if (_oidc_strcmp(p, OIDC_SESSION_TYPE_STORE_ID_TOKEN) == 0) {
196196
// only for client-cookie
197197
cfg->store_id_token = 1;
198-
} else if (_oidc_strcmp(p, OIDC_SESSION_TYPE_PERSISTENT
199-
OIDC_SESSION_TYPE_SEPARATOR OIDC_SESSION_TYPE_STORE_ID_TOKEN) == 0) {
198+
} else if (_oidc_strcmp(p, OIDC_SESSION_TYPE_PERSISTENT OIDC_SESSION_TYPE_SEPARATOR
199+
OIDC_SESSION_TYPE_STORE_ID_TOKEN) == 0) {
200200
// only for client-cookie
201201
cfg->persistent_session_cookie = 1;
202202
cfg->store_id_token = 1;
@@ -442,13 +442,16 @@ const char *oidc_cmd_x_forwarded_headers_set(cmd_parms *cmd, void *m, const char
442442
#define OIDC_DEFAULT_X_FORWARDED_HEADERS OIDC_HDR_NONE
443443
OIDC_CFG_MEMBER_FUNC_TYPE_GET(x_forwarded_headers, oidc_hdr_x_forwarded_t, OIDC_DEFAULT_X_FORWARDED_HEADERS)
444444

445+
#define OIDC_CHECK_X_FORWARDED_HDR_LOG_DISABLE "OIDC_CHECK_X_FORWARDED_HDR_LOG_DISABLE"
446+
445447
static void oidc_check_x_forwarded_hdr(request_rec *r, const apr_byte_t x_forwarded_headers, const apr_byte_t hdr_type,
446448
const char *hdr_str, const char *(hdr_func)(const request_rec *r)) {
449+
const char *env_var = apr_table_get(r->subprocess_env, OIDC_CHECK_X_FORWARDED_HDR_LOG_DISABLE);
447450
if (hdr_func(r)) {
448-
if (!(x_forwarded_headers & hdr_type))
451+
if (!(x_forwarded_headers & hdr_type) && (_oidc_strstr(env_var, hdr_str) == NULL))
449452
oidc_warn(r, "header %s received but %s not configured for it", hdr_str, OIDCXForwardedHeaders);
450453
} else {
451-
if (x_forwarded_headers & hdr_type)
454+
if ((x_forwarded_headers & hdr_type) && (_oidc_strstr(env_var, hdr_str) == NULL))
452455
oidc_warn(r, "%s configured for header %s but not found in request", OIDCXForwardedHeaders,
453456
hdr_str);
454457
}

src/session.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,13 +526,17 @@ static const char *oidc_session_get_key2string(request_rec *r, oidc_session_t *z
526526
void oidc_session_set_filtered_claims(request_rec *r, oidc_session_t *z, const char *session_key, const char *claims) {
527527
oidc_cfg_t *c = ap_get_module_config(r->server->module_config, &auth_openidc_module);
528528

529-
const char *name;
529+
const char *name = NULL;
530530
json_t *src = NULL, *dst = NULL, *value = NULL;
531531
void *iter = NULL;
532-
apr_byte_t is_allowed;
532+
apr_byte_t is_allowed = TRUE;
533533
int warn_claim_size = OIDC_SESSION_WARN_CLAIM_SIZE;
534534
const char *s = NULL;
535535

536+
// avoid gcc 14 warning: '%s' directive argument is null [-Wformat-overflow=]
537+
if (session_key == NULL)
538+
session_key = "";
539+
536540
if (oidc_util_json_decode_object(r, claims, &src) == FALSE) {
537541
oidc_session_set(r, z, session_key, NULL);
538542
return;

0 commit comments

Comments
 (0)