Skip to content

Commit 8b2cb99

Browse files
committed
session.c: correct filtered claims JSON object check
Signed-off-by: Hans Zandbelt <[email protected]>
1 parent 92faf42 commit 8b2cb99

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/handle/userinfo.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -358,11 +358,12 @@ void oidc_userinfo_pass_as(request_rec *r, oidc_cfg_t *cfg, oidc_session_t *sess
358358

359359
#ifdef USE_LIBJQ
360360
const char *s_claims = NULL;
361-
const char *filter = oidc_cfg_dir_userinfo_claims_expr_get(r);
362-
if (filter) {
363-
s_claims = oidc_util_jq_filter(r, oidc_session_get_userinfo_claims(r, session), filter);
364-
if (oidc_util_json_decode_object(r, s_claims, &filtered_claims) != TRUE) {
365-
oidc_error(r, "decoding filtered userinfo claims JSON object failed");
361+
const char *s_filter = oidc_cfg_dir_userinfo_claims_expr_get(r);
362+
if (s_filter) {
363+
s_claims = oidc_util_jq_filter(r, oidc_session_get_userinfo_claims(r, session), s_filter);
364+
if (oidc_util_json_decode_object(r, s_claims, &filtered_claims) == FALSE) {
365+
oidc_error(r, "JQ filtering of claims for [%s] resulted in invalid JSON object, filter='%s'",
366+
"userinfo", s_filter);
366367
return;
367368
}
368369
}

src/session.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -615,12 +615,15 @@ static void oidc_session_set_filtered_claims(request_rec *r, oidc_session_t *z,
615615
#ifdef USE_LIBJQ
616616
const char *filtered_claims = NULL;
617617
const oidc_apr_expr_t *filter = oidc_cfg_filter_claims_expr_get(c);
618+
const char *s_filter = oidc_util_apr_expr_exec(r, filter, TRUE);
618619
if (filter != NULL) {
619-
filtered_claims = oidc_util_jq_filter(r, dst, oidc_util_apr_expr_exec(r, filter, TRUE));
620+
filtered_claims = oidc_util_jq_filter(r, dst, s_filter);
620621
json_decref(dst);
621622
dst = NULL;
622-
if (oidc_util_json_decode_object(r, filtered_claims, &dst))
623-
oidc_error(r, "jq filtering of claims for [%s] resulted in invalid JSON object", session_key);
623+
if (oidc_util_json_decode_object(r, filtered_claims, &dst) == FALSE) {
624+
oidc_error(r, "JQ filtering of claims for [%s] resulted in invalid JSON object, filter='%s'",
625+
session_key, s_filter);
626+
}
624627
}
625628
#endif
626629

0 commit comments

Comments
 (0)