From: Stefan Metzmacher Date: Wed, 30 Nov 2016 08:11:31 +0000 (+0100) Subject: getncchanges: don't process DRSUAPI_DRS_CRITICAL_ONLY for EXOPs X-Git-Tag: talloc-2.1.9~269 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e15cdaa01fdee60f8bd57db41f062ace77c216d;p=thirdparty%2Fsamba.git getncchanges: don't process DRSUAPI_DRS_CRITICAL_ONLY for EXOPs BUG: https://bugzilla.samba.org/show_bug.cgi?id=12398 Signed-off-by: Stefan Metzmacher Reviewed-by: Andrew Bartlett --- diff --git a/source4/rpc_server/drsuapi/getncchanges.c b/source4/rpc_server/drsuapi/getncchanges.c index 2860b90614a..92235ac274e 100644 --- a/source4/rpc_server/drsuapi/getncchanges.c +++ b/source4/rpc_server/drsuapi/getncchanges.c @@ -1471,10 +1471,16 @@ static WERROR getncchanges_collect_objects(struct drsuapi_bind_state *b_state, enum ldb_scope scope = LDB_SCOPE_SUBTREE; //const char *extra_filter; struct drsuapi_getncchanges_state *getnc_state = b_state->getncchanges_state; + bool critical_only = false; + + if (req10->replica_flags & DRSUAPI_DRS_CRITICAL_ONLY) { + critical_only = true; + } if (req10->extended_op == DRSUAPI_EXOP_REPL_OBJ || req10->extended_op == DRSUAPI_EXOP_REPL_SECRET) { scope = LDB_SCOPE_BASE; + critical_only = false; } //extra_filter = lpcfg_parm_string(dce_call->conn->dce_ctx->lp_ctx, NULL, "drs", "object filter"); @@ -1490,7 +1496,7 @@ static WERROR getncchanges_collect_objects(struct drsuapi_bind_state *b_state, search_filter = talloc_asprintf(mem_ctx, "(&%s(%s))", search_filter, extra_filter); } - if (req10->replica_flags & DRSUAPI_DRS_CRITICAL_ONLY) { + if (critical_only) { search_filter = talloc_asprintf(mem_ctx, "(&%s(isCriticalSystemObject=TRUE))", search_filter);