From b9cfe109453937f5c2ae5008bee4b12226d68914 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 13 Nov 2010 19:08:45 +1100 Subject: s4-drs: fixed a crash in writspn sam_ctx_system may be NULL for non-privileged users Autobuild-User: Andrew Tridgell Autobuild-Date: Sat Nov 13 08:52:53 UTC 2010 on sn-devel-104 --- source4/rpc_server/drsuapi/writespn.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'source4/rpc_server') diff --git a/source4/rpc_server/drsuapi/writespn.c b/source4/rpc_server/drsuapi/writespn.c index 23b0626075..320232dcf9 100644 --- a/source4/rpc_server/drsuapi/writespn.c +++ b/source4/rpc_server/drsuapi/writespn.c @@ -160,6 +160,7 @@ WERROR dcesrv_drsuapi_DsWriteAccountSpn(struct dcesrv_call_state *dce_call, TALL int ret; unsigned spn_count=0; bool passed_checks = true; + struct ldb_context *sam_ctx; req = &r->in.req->req1; count = req->count; @@ -215,9 +216,14 @@ WERROR dcesrv_drsuapi_DsWriteAccountSpn(struct dcesrv_call_state *dce_call, TALL } } + if (passed_checks && b_state->sam_ctx_system) { + sam_ctx = b_state->sam_ctx_system; + } else { + sam_ctx = b_state->sam_ctx; + } + /* Apply to database */ - ret = dsdb_modify(passed_checks?b_state->sam_ctx_system:b_state->sam_ctx, - msg, DSDB_MODIFY_PERMISSIVE); + ret = dsdb_modify(sam_ctx, msg, DSDB_MODIFY_PERMISSIVE); if (ret != LDB_SUCCESS) { DEBUG(0,("Failed to modify SPNs on %s: %s\n", ldb_dn_get_linearized(msg->dn), -- cgit