From f0e73030239d29654eb54ebc95c636ff6385d575 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 1 Apr 2011 15:58:55 +1100 Subject: s4-rpc: improved error mapping for several RPC server calls Pair-Programmed-With: Andrew Bartlett --- source4/rpc_server/samr/dcesrv_samr.c | 41 ++++++++++++++++------------------- 1 file changed, 19 insertions(+), 22 deletions(-) (limited to 'source4/rpc_server/samr/dcesrv_samr.c') diff --git a/source4/rpc_server/samr/dcesrv_samr.c b/source4/rpc_server/samr/dcesrv_samr.c index 25e57278d3..1c7416cb7b 100644 --- a/source4/rpc_server/samr/dcesrv_samr.c +++ b/source4/rpc_server/samr/dcesrv_samr.c @@ -985,9 +985,7 @@ static NTSTATUS dcesrv_samr_SetDomainInfo(struct dcesrv_call_state *dce_call, TA DEBUG(1,("Failed to modify record %s: %s\n", ldb_dn_get_linearized(d_state->domain_dn), ldb_errstring(sam_ctx))); - - /* we really need samdb.c to return NTSTATUS */ - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } return NT_STATUS_OK; @@ -1921,8 +1919,7 @@ static NTSTATUS dcesrv_samr_SetGroupInfo(struct dcesrv_call_state *dce_call, TAL /* modify the samdb record */ ret = ldb_modify(g_state->sam_ctx, msg); if (ret != LDB_SUCCESS) { - /* we really need samdb.c to return NTSTATUS */ - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } return NT_STATUS_OK; @@ -1988,7 +1985,7 @@ static NTSTATUS dcesrv_samr_AddGroupMember(struct dcesrv_call_state *dce_call, T ret = samdb_msg_add_addval(d_state->sam_ctx, mem_ctx, mod, "member", memberdn); if (ret != LDB_SUCCESS) { - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } ret = ldb_modify(a_state->sam_ctx, mod); @@ -2000,7 +1997,7 @@ static NTSTATUS dcesrv_samr_AddGroupMember(struct dcesrv_call_state *dce_call, T case LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS: return NT_STATUS_ACCESS_DENIED; default: - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } } @@ -2023,7 +2020,7 @@ static NTSTATUS dcesrv_samr_DeleteDomainGroup(struct dcesrv_call_state *dce_call ret = ldb_delete(a_state->sam_ctx, a_state->account_dn); if (ret != LDB_SUCCESS) { - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } talloc_free(h); @@ -2104,7 +2101,7 @@ static NTSTATUS dcesrv_samr_DeleteGroupMember(struct dcesrv_call_state *dce_call case LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS: return NT_STATUS_ACCESS_DENIED; default: - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } } @@ -2371,8 +2368,7 @@ static NTSTATUS dcesrv_samr_SetAliasInfo(struct dcesrv_call_state *dce_call, TAL /* modify the samdb record */ ret = ldb_modify(a_state->sam_ctx, msg); if (ret != LDB_SUCCESS) { - /* we really need samdb.c to return NTSTATUS */ - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } return NT_STATUS_OK; @@ -2397,7 +2393,7 @@ static NTSTATUS dcesrv_samr_DeleteDomAlias(struct dcesrv_call_state *dce_call, T ret = ldb_delete(a_state->sam_ctx, a_state->account_dn); if (ret != LDB_SUCCESS) { - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } talloc_free(h); @@ -2461,7 +2457,7 @@ static NTSTATUS dcesrv_samr_AddAliasMember(struct dcesrv_call_state *dce_call, T ret = samdb_msg_add_addval(d_state->sam_ctx, mem_ctx, mod, "member", ldb_dn_alloc_linearized(mem_ctx, memberdn)); if (ret != LDB_SUCCESS) { - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } ret = ldb_modify(a_state->sam_ctx, mod); @@ -2473,7 +2469,7 @@ static NTSTATUS dcesrv_samr_AddAliasMember(struct dcesrv_call_state *dce_call, T case LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS: return NT_STATUS_ACCESS_DENIED; default: - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } } @@ -2513,7 +2509,7 @@ static NTSTATUS dcesrv_samr_DeleteAliasMember(struct dcesrv_call_state *dce_call ret = samdb_msg_add_delval(d_state->sam_ctx, mem_ctx, mod, "member", memberdn); if (ret != LDB_SUCCESS) { - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } ret = ldb_modify(a_state->sam_ctx, mod); @@ -2525,7 +2521,7 @@ static NTSTATUS dcesrv_samr_DeleteAliasMember(struct dcesrv_call_state *dce_call case LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS: return NT_STATUS_ACCESS_DENIED; default: - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } } @@ -2676,7 +2672,7 @@ static NTSTATUS dcesrv_samr_DeleteUser(struct dcesrv_call_state *dce_call, TALLO DEBUG(1, ("Failed to delete user: %s: %s\n", ldb_dn_get_linearized(a_state->account_dn), ldb_errstring(a_state->sam_ctx))); - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } talloc_free(h); @@ -3534,8 +3530,7 @@ static NTSTATUS dcesrv_samr_SetUserInfo(struct dcesrv_call_state *dce_call, TALL ldb_dn_get_linearized(a_state->account_dn), ldb_errstring(a_state->sam_ctx))); - /* we really need samdb.c to return NTSTATUS */ - return NT_STATUS_UNSUCCESSFUL; + return dsdb_ldb_err_to_ntstatus(ret); } } @@ -3934,6 +3929,7 @@ static NTSTATUS dcesrv_samr_RemoveMemberFromForeignDomain(struct dcesrv_call_sta for (i=0; isam_ctx, mod) != LDB_SUCCESS) - return NT_STATUS_UNSUCCESSFUL; - + ret = ldb_modify(d_state->sam_ctx, mod); talloc_free(mod); + if (ret != LDB_SUCCESS) { + return dsdb_ldb_err_to_ntstatus(ret); + } } return NT_STATUS_OK; -- cgit