mirror of
https://github.com/samba-team/samba.git
synced 2025-01-21 18:04:06 +03:00
CVE-2022-2031 s4:kdc: Implement is_kadmin_changepw() helper function
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15047 Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz> [jsutton@samba.org Adapted entry to entry_ex->entry]
This commit is contained in:
parent
91a1b0955a
commit
36d94ffb9c
@ -816,6 +816,14 @@ static int principal_comp_strcmp(krb5_context context,
|
|||||||
component, string, false);
|
component, string, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool is_kadmin_changepw(krb5_context context,
|
||||||
|
krb5_const_principal principal)
|
||||||
|
{
|
||||||
|
return krb5_princ_size(context, principal) == 2 &&
|
||||||
|
(principal_comp_strcmp(context, principal, 0, "kadmin") == 0) &&
|
||||||
|
(principal_comp_strcmp(context, principal, 1, "changepw") == 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Construct an hdb_entry from a directory entry.
|
* Construct an hdb_entry from a directory entry.
|
||||||
*/
|
*/
|
||||||
@ -1110,11 +1118,9 @@ static krb5_error_code samba_kdc_message2entry(krb5_context context,
|
|||||||
* 'change password', as otherwise we could get into
|
* 'change password', as otherwise we could get into
|
||||||
* trouble, and not enforce the password expirty.
|
* trouble, and not enforce the password expirty.
|
||||||
* Instead, only do it when request is for the kpasswd service */
|
* Instead, only do it when request is for the kpasswd service */
|
||||||
if (ent_type == SAMBA_KDC_ENT_TYPE_SERVER
|
if (ent_type == SAMBA_KDC_ENT_TYPE_SERVER &&
|
||||||
&& krb5_princ_size(context, principal) == 2
|
is_kadmin_changepw(context, principal) &&
|
||||||
&& (principal_comp_strcmp(context, principal, 0, "kadmin") == 0)
|
lpcfg_is_my_domain_or_realm(lp_ctx, realm)) {
|
||||||
&& (principal_comp_strcmp(context, principal, 1, "changepw") == 0)
|
|
||||||
&& lpcfg_is_my_domain_or_realm(lp_ctx, realm)) {
|
|
||||||
entry_ex->entry.flags.change_pw = 1;
|
entry_ex->entry.flags.change_pw = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user