mirror of
https://github.com/samba-team/samba.git
synced 2025-02-03 13:47:25 +03:00
CVE-2018-1057: s4:dsdb/acl: run password checking only once
This is needed, because a later commit will let the acl module add a control to the change request msg and we must ensure that this is only done once. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13272 Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
This commit is contained in:
parent
3e6621fe58
commit
407a34c73f
@ -1122,6 +1122,7 @@ static int acl_modify(struct ldb_module *module, struct ldb_request *req)
|
||||
struct ldb_control *as_system;
|
||||
struct ldb_control *is_undelete;
|
||||
bool userPassword;
|
||||
bool password_rights_checked = false;
|
||||
TALLOC_CTX *tmp_ctx;
|
||||
const struct ldb_message *msg = req->op.mod.message;
|
||||
static const char *acl_attrs[] = {
|
||||
@ -1267,6 +1268,9 @@ static int acl_modify(struct ldb_module *module, struct ldb_request *req)
|
||||
} else if (ldb_attr_cmp("unicodePwd", el->name) == 0 ||
|
||||
(userPassword && ldb_attr_cmp("userPassword", el->name) == 0) ||
|
||||
ldb_attr_cmp("clearTextPassword", el->name) == 0) {
|
||||
if (password_rights_checked) {
|
||||
continue;
|
||||
}
|
||||
ret = acl_check_password_rights(tmp_ctx,
|
||||
module,
|
||||
req,
|
||||
@ -1277,6 +1281,7 @@ static int acl_modify(struct ldb_module *module, struct ldb_request *req)
|
||||
if (ret != LDB_SUCCESS) {
|
||||
goto fail;
|
||||
}
|
||||
password_rights_checked = true;
|
||||
} else if (ldb_attr_cmp("servicePrincipalName", el->name) == 0) {
|
||||
ret = acl_check_spn(tmp_ctx,
|
||||
module,
|
||||
|
Loading…
x
Reference in New Issue
Block a user