From: Stefan Metzmacher Date: Thu, 20 Feb 2025 15:13:44 +0000 (+0100) Subject: s4:kdc: let samba_kdc_get_claims_data_from_pac() return if a buffer was found X-Git-Tag: tevent-0.17.0~648 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93c69dfeb5099b69f0483463b4a5e3fdd3cfc790;p=thirdparty%2Fsamba.git s4:kdc: let samba_kdc_get_claims_data_from_pac() return if a buffer was found This will simplify further changes. Signed-off-by: Stefan Metzmacher Reviewed-by: Ralph Boehme --- diff --git a/source4/kdc/pac-glue.c b/source4/kdc/pac-glue.c index f85ed073348..1a0359aef58 100644 --- a/source4/kdc/pac-glue.c +++ b/source4/kdc/pac-glue.c @@ -3142,7 +3142,8 @@ static krb5_error_code samba_kdc_get_claims_data_from_pac(TALLOC_CTX *mem_ctx, krb5_context context, struct samba_kdc_entry_pac entry, - struct claims_data **claims_data_out); + struct claims_data **claims_data_out, + bool *was_found); static krb5_error_code samba_kdc_get_claims_data(TALLOC_CTX *mem_ctx, @@ -3169,10 +3170,12 @@ krb5_error_code samba_kdc_get_claims_data(TALLOC_CTX *mem_ctx, } if (samba_krb5_pac_is_trusted(entry)) { + bool was_found = false; return samba_kdc_get_claims_data_from_pac(mem_ctx, context, entry, - claims_data_out); + claims_data_out, + &was_found); } return samba_kdc_get_claims_data_from_db(kdc_db_ctx->samdb, @@ -3184,7 +3187,8 @@ static krb5_error_code samba_kdc_get_claims_data_from_pac(TALLOC_CTX *mem_ctx, krb5_context context, struct samba_kdc_entry_pac entry, - struct claims_data **claims_data_out) + struct claims_data **claims_data_out, + bool *was_found) { TALLOC_CTX *frame = NULL; krb5_data claims_info = {}; @@ -3192,6 +3196,8 @@ krb5_error_code samba_kdc_get_claims_data_from_pac(TALLOC_CTX *mem_ctx, NTSTATUS status = NT_STATUS_OK; krb5_error_code code; + *was_found = false; + if (!samba_krb5_pac_is_trusted(entry)) { code = EINVAL; goto out; @@ -3225,10 +3231,15 @@ krb5_error_code samba_kdc_get_claims_data_from_pac(TALLOC_CTX *mem_ctx, /* OK. */ krb5_clear_error_message(context); code = 0; + claims_info.length = 0; } else if (code != 0) { DBG_ERR("Error getting CLIENT_CLAIMS_INFO from PAC\n"); goto out; - } else if (claims_info.length) { + } else { + *was_found = true; + } + + if (claims_info.length) { DATA_BLOB claims_blob = data_blob_const(claims_info.data, claims_info.length);