1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-07 00:58:40 +03:00

r2992: drsuapi uses WERROR not NTSTATUS

metze
(This used to be commit 757f67c08b0b1309d8a0b900539111c7bc430b0e)
This commit is contained in:
Stefan Metzmacher 2004-10-15 11:08:14 +00:00 committed by Gerald (Jerry) Carter
parent f4e4989cb7
commit 1890e6a659
5 changed files with 201 additions and 96 deletions

View File

@ -231,6 +231,9 @@
#define WERR_DFS_INTERNAL_ERROR W_ERROR(NERR_BASE+590)
#define WERR_DFS_CANT_CREATE_JUNCT W_ERROR(NERR_BASE+569)
/* DS errors */
#define WERR_DS_OBJ_NOT_FOUND W_ERROR(0x0000208d)
#define WERR_FOOBAR WERR_GENERAL_FAILURE

View File

@ -17,7 +17,7 @@ interface drsuapi
[size_is(length)] uint8 data[];
} drsuapi_DsBindInfo;
NTSTATUS drsuapi_DsBind(
WERROR drsuapi_DsBind(
[in] GUID *server_guid,
[in,out] drsuapi_DsBindInfo *bind_info,
[out,ref] policy_handle *bind_handle
@ -25,49 +25,49 @@ interface drsuapi
/*****************/
/* Function 0x01 */
NTSTATUS drsuapi_DsUnbind(
WERROR drsuapi_DsUnbind(
[in,out,ref] policy_handle *bind_handle
);
/*****************/
/* Function 0x02 */
NTSTATUS DRSUAPI_REPLICA_SYNC();
WERROR DRSUAPI_REPLICA_SYNC();
/*****************/
/* Function 0x03 */
NTSTATUS DRSUAPI_GET_NC_CHANGES();
WERROR DRSUAPI_GET_NC_CHANGES();
/*****************/
/* Function 0x04 */
NTSTATUS DRSUAPI_UPDATE_REFS();
WERROR DRSUAPI_UPDATE_REFS();
/*****************/
/* Function 0x05 */
NTSTATUS DRSUAPI_REPLICA_ADD();
WERROR DRSUAPI_REPLICA_ADD();
/*****************/
/* Function 0x06 */
NTSTATUS DRSUAPI_REPLICA_DEL();
WERROR DRSUAPI_REPLICA_DEL();
/*****************/
/* Function 0x07 */
NTSTATUS DRSUAPI_REPLICA_MODIFY();
WERROR DRSUAPI_REPLICA_MODIFY();
/*****************/
/* Function 0x08 */
NTSTATUS DRSUAPI_VERIFY_NAMES();
WERROR DRSUAPI_VERIFY_NAMES();
/*****************/
/* Function 0x09 */
NTSTATUS DRSUAPI_GET_MEMBERSHIPS();
WERROR DRSUAPI_GET_MEMBERSHIPS();
/*****************/
/* Function 0x0a */
NTSTATUS DRSUAPI_INTER_DOMAIN_MOVE();
WERROR DRSUAPI_INTER_DOMAIN_MOVE();
/*****************/
/* Function 0x0b */
NTSTATUS DRSUAPI_GET_NT4_CHANGELOG();
WERROR DRSUAPI_GET_NT4_CHANGELOG();
/*****************/
/* Function 0x0c */
@ -137,7 +137,7 @@ interface drsuapi
[case(1)] drsuapi_DsNameCtr1 *ctr1;
} drsuapi_DsNameCtr;
NTSTATUS drsuapi_DsCrackNames(
WERROR drsuapi_DsCrackNames(
[in,ref] policy_handle *bind_handle,
[in, out] uint32 level,
[in,switch_is(level)] drsuapi_DsNameRequest req,
@ -146,15 +146,15 @@ interface drsuapi
/*****************/
/* Function 0x0d */
NTSTATUS DRSUAPI_WRITE_SPN();
WERROR DRSUAPI_WRITE_SPN();
/*****************/
/* Function 0x0e */
NTSTATUS DRSUAPI_REMOVE_DS_SERVER();
WERROR DRSUAPI_REMOVE_DS_SERVER();
/*****************/
/* Function 0x0f */
NTSTATUS DRSUAPI_REMOVE_DS_DOMAIN();
WERROR DRSUAPI_REMOVE_DS_DOMAIN();
/*****************/
/* Function 0x10 */
@ -226,7 +226,7 @@ interface drsuapi
} drsuapi_DsGetDCInfoCtr;
/* maybe WERROR function */
NTSTATUS drsuapi_DsGetDomainControllerInfo(
WERROR drsuapi_DsGetDomainControllerInfo(
[in,ref] policy_handle *bind_handle,
[in, out] int32 level,
[in,switch_is(level)] drsuapi_DsGetDCInfoRequest req,
@ -235,33 +235,33 @@ interface drsuapi
/*****************/
/* Function 0x11 */
NTSTATUS DRSUAPI_ADD_ENTRY();
WERROR DRSUAPI_ADD_ENTRY();
/*****************/
/* Function 0x12 */
NTSTATUS DRSUAPI_EXECUTE_KCC();
WERROR DRSUAPI_EXECUTE_KCC();
/*****************/
/* Function 0x13 */
NTSTATUS DRSUAPI_GET_REPL_INFO();
WERROR DRSUAPI_GET_REPL_INFO();
/*****************/
/* Function 0x14 */
NTSTATUS DRSUAPI_ADD_SID_HISTORY();
WERROR DRSUAPI_ADD_SID_HISTORY();
/*****************/
/* Function 0x15 */
NTSTATUS DRSUAPI_GET_MEMBERSHIPS2();
WERROR DRSUAPI_GET_MEMBERSHIPS2();
/*****************/
/* Function 0x16 */
NTSTATUS DRSUAPI_REPLICA_VERIFY_OBJECTS();
WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS();
/*****************/
/* Function 0x17 */
NTSTATUS DRSUAPI_GET_OBJECT_EXISTENCE();
WERROR DRSUAPI_GET_OBJECT_EXISTENCE();
/*****************/
/* Function 0x18 */
NTSTATUS DRSUAPI_QUERY_SITES_BY_COST();
WERROR DRSUAPI_QUERY_SITES_BY_COST();
}

View File

@ -35,7 +35,7 @@ static void drsuapi_handle_destroy(struct dcesrv_connection *conn, struct dcesrv
/*
drsuapi_DsBind
*/
static NTSTATUS drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct drsuapi_DsBind *r)
{
struct drsuapi_bind_state *b_state;
@ -45,16 +45,14 @@ static NTSTATUS drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
ZERO_STRUCTP(r->out.bind_handle);
b_state = talloc_p(dce_call->conn, struct drsuapi_bind_state);
if (!b_state) {
return NT_STATUS_NO_MEMORY;
}
WERR_TALLOC_CHECK(b_state);
/* TODO: fill b_state here */
handle = dcesrv_handle_new(dce_call->conn, DRSUAPI_BIND_HANDLE);
if (!handle) {
talloc_free(b_state);
return NT_STATUS_NO_MEMORY;
return WERR_NOMEM;
}
handle->data = b_state;
@ -62,21 +60,21 @@ static NTSTATUS drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_CTX *m
*r->out.bind_handle = handle->wire_handle;
return NT_STATUS_OK;
return WERR_OK;
}
/*
drsuapi_DsUnbind
*/
static NTSTATUS drsuapi_DsUnbind(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR drsuapi_DsUnbind(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct drsuapi_DsUnbind *r)
{
struct dcesrv_handle *h;
*r->out.bind_handle = *r->in.bind_handle;
DCESRV_PULL_HANDLE(h, r->in.bind_handle, DRSUAPI_BIND_HANDLE);
DCESRV_PULL_HANDLE_WERR(h, r->in.bind_handle, DRSUAPI_BIND_HANDLE);
/* this causes the callback drsuapi_handle_destroy() to be called by
the handle destroy code which destroys the state associated
@ -85,14 +83,14 @@ static NTSTATUS drsuapi_DsUnbind(struct dcesrv_call_state *dce_call, TALLOC_CTX
ZERO_STRUCTP(r->out.bind_handle);
return NT_STATUS_OK;
return WERR_OK;
}
/*
DRSUAPI_REPLICA_SYNC
*/
static NTSTATUS DRSUAPI_REPLICA_SYNC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_REPLICA_SYNC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_REPLICA_SYNC *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -102,7 +100,7 @@ static NTSTATUS DRSUAPI_REPLICA_SYNC(struct dcesrv_call_state *dce_call, TALLOC_
/*
DRSUAPI_GET_NC_CHANGES
*/
static NTSTATUS DRSUAPI_GET_NC_CHANGES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_GET_NC_CHANGES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_GET_NC_CHANGES *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -112,7 +110,7 @@ static NTSTATUS DRSUAPI_GET_NC_CHANGES(struct dcesrv_call_state *dce_call, TALLO
/*
DRSUAPI_UPDATE_REFS
*/
static NTSTATUS DRSUAPI_UPDATE_REFS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_UPDATE_REFS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_UPDATE_REFS *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -122,7 +120,7 @@ static NTSTATUS DRSUAPI_UPDATE_REFS(struct dcesrv_call_state *dce_call, TALLOC_C
/*
DRSUAPI_REPLICA_ADD
*/
static NTSTATUS DRSUAPI_REPLICA_ADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_REPLICA_ADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_REPLICA_ADD *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -132,7 +130,7 @@ static NTSTATUS DRSUAPI_REPLICA_ADD(struct dcesrv_call_state *dce_call, TALLOC_C
/*
DRSUAPI_REPLICA_DEL
*/
static NTSTATUS DRSUAPI_REPLICA_DEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_REPLICA_DEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_REPLICA_DEL *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -142,7 +140,7 @@ static NTSTATUS DRSUAPI_REPLICA_DEL(struct dcesrv_call_state *dce_call, TALLOC_C
/*
DRSUAPI_REPLICA_MODIFY
*/
static NTSTATUS DRSUAPI_REPLICA_MODIFY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_REPLICA_MODIFY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_REPLICA_MODIFY *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -152,7 +150,7 @@ static NTSTATUS DRSUAPI_REPLICA_MODIFY(struct dcesrv_call_state *dce_call, TALLO
/*
DRSUAPI_VERIFY_NAMES
*/
static NTSTATUS DRSUAPI_VERIFY_NAMES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_VERIFY_NAMES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_VERIFY_NAMES *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -162,7 +160,7 @@ static NTSTATUS DRSUAPI_VERIFY_NAMES(struct dcesrv_call_state *dce_call, TALLOC_
/*
DRSUAPI_GET_MEMBERSHIPS
*/
static NTSTATUS DRSUAPI_GET_MEMBERSHIPS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_GET_MEMBERSHIPS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_GET_MEMBERSHIPS *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -172,7 +170,7 @@ static NTSTATUS DRSUAPI_GET_MEMBERSHIPS(struct dcesrv_call_state *dce_call, TALL
/*
DRSUAPI_INTER_DOMAIN_MOVE
*/
static NTSTATUS DRSUAPI_INTER_DOMAIN_MOVE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_INTER_DOMAIN_MOVE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_INTER_DOMAIN_MOVE *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -182,7 +180,7 @@ static NTSTATUS DRSUAPI_INTER_DOMAIN_MOVE(struct dcesrv_call_state *dce_call, TA
/*
DRSUAPI_GET_NT4_CHANGELOG
*/
static NTSTATUS DRSUAPI_GET_NT4_CHANGELOG(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_GET_NT4_CHANGELOG(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_GET_NT4_CHANGELOG *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -192,13 +190,13 @@ static NTSTATUS DRSUAPI_GET_NT4_CHANGELOG(struct dcesrv_call_state *dce_call, TA
/*
drsuapi_DsCrackNames => drsuapip_cracknames.c
*/
static NTSTATUS (*drsuapi_DsCrackNames)(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR (*drsuapi_DsCrackNames)(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct drsuapi_DsCrackNames *r) = dcesrv_drsuapi_DsCrackNames;
/*
DRSUAPI_WRITE_SPN
*/
static NTSTATUS DRSUAPI_WRITE_SPN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_WRITE_SPN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_WRITE_SPN *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -208,7 +206,7 @@ static NTSTATUS DRSUAPI_WRITE_SPN(struct dcesrv_call_state *dce_call, TALLOC_CTX
/*
DRSUAPI_REMOVE_DS_SERVER
*/
static NTSTATUS DRSUAPI_REMOVE_DS_SERVER(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_REMOVE_DS_SERVER(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_REMOVE_DS_SERVER *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -218,7 +216,7 @@ static NTSTATUS DRSUAPI_REMOVE_DS_SERVER(struct dcesrv_call_state *dce_call, TAL
/*
DRSUAPI_REMOVE_DS_DOMAIN
*/
static NTSTATUS DRSUAPI_REMOVE_DS_DOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_REMOVE_DS_DOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_REMOVE_DS_DOMAIN *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -228,7 +226,7 @@ static NTSTATUS DRSUAPI_REMOVE_DS_DOMAIN(struct dcesrv_call_state *dce_call, TAL
/*
drsuapi_DsGetDomainControllerInfo
*/
static NTSTATUS drsuapi_DsGetDomainControllerInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR drsuapi_DsGetDomainControllerInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct drsuapi_DsGetDomainControllerInfo *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -238,7 +236,7 @@ static NTSTATUS drsuapi_DsGetDomainControllerInfo(struct dcesrv_call_state *dce_
/*
DRSUAPI_ADD_ENTRY
*/
static NTSTATUS DRSUAPI_ADD_ENTRY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_ADD_ENTRY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_ADD_ENTRY *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -248,7 +246,7 @@ static NTSTATUS DRSUAPI_ADD_ENTRY(struct dcesrv_call_state *dce_call, TALLOC_CTX
/*
DRSUAPI_EXECUTE_KCC
*/
static NTSTATUS DRSUAPI_EXECUTE_KCC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_EXECUTE_KCC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_EXECUTE_KCC *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -258,7 +256,7 @@ static NTSTATUS DRSUAPI_EXECUTE_KCC(struct dcesrv_call_state *dce_call, TALLOC_C
/*
DRSUAPI_GET_REPL_INFO
*/
static NTSTATUS DRSUAPI_GET_REPL_INFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_GET_REPL_INFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_GET_REPL_INFO *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -268,7 +266,7 @@ static NTSTATUS DRSUAPI_GET_REPL_INFO(struct dcesrv_call_state *dce_call, TALLOC
/*
DRSUAPI_ADD_SID_HISTORY
*/
static NTSTATUS DRSUAPI_ADD_SID_HISTORY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_ADD_SID_HISTORY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_ADD_SID_HISTORY *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -278,7 +276,7 @@ static NTSTATUS DRSUAPI_ADD_SID_HISTORY(struct dcesrv_call_state *dce_call, TALL
/*
DRSUAPI_GET_MEMBERSHIPS2
*/
static NTSTATUS DRSUAPI_GET_MEMBERSHIPS2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_GET_MEMBERSHIPS2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_GET_MEMBERSHIPS2 *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -288,7 +286,7 @@ static NTSTATUS DRSUAPI_GET_MEMBERSHIPS2(struct dcesrv_call_state *dce_call, TAL
/*
DRSUAPI_REPLICA_VERIFY_OBJECTS
*/
static NTSTATUS DRSUAPI_REPLICA_VERIFY_OBJECTS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -298,7 +296,7 @@ static NTSTATUS DRSUAPI_REPLICA_VERIFY_OBJECTS(struct dcesrv_call_state *dce_cal
/*
DRSUAPI_GET_OBJECT_EXISTENCE
*/
static NTSTATUS DRSUAPI_GET_OBJECT_EXISTENCE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_GET_OBJECT_EXISTENCE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_GET_OBJECT_EXISTENCE *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
@ -308,7 +306,7 @@ static NTSTATUS DRSUAPI_GET_OBJECT_EXISTENCE(struct dcesrv_call_state *dce_call,
/*
DRSUAPI_QUERY_SITES_BY_COST
*/
static NTSTATUS DRSUAPI_QUERY_SITES_BY_COST(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
static WERROR DRSUAPI_QUERY_SITES_BY_COST(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct DRSUAPI_QUERY_SITES_BY_COST *r)
{
DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);

View File

@ -26,7 +26,7 @@
#include "rpc_server/drsuapi/dcesrv_drsuapi.h"
static NTSTATUS DsCrackNameOneName(struct drsuapi_bind_state *b_state, TALLOC_CTX *mem_ctx,
static WERROR DsCrackNameOneName(struct drsuapi_bind_state *b_state, TALLOC_CTX *mem_ctx,
uint32 format_offered, uint32 format_desired, const char *name,
struct drsuapi_DsNameInfo1 *info1)
{
@ -41,53 +41,53 @@ static NTSTATUS DsCrackNameOneName(struct drsuapi_bind_state *b_state, TALLOC_CT
char *str;
str = talloc_asprintf(mem_ctx, "%s/", lp_realm());
NTSTATUS_TALLOC_CHECK(str);
WERR_TALLOC_CHECK(str);
ret = strcasecmp(str, name);
talloc_free(str);
if (ret != 0) {
info1->status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND;
return NT_STATUS_OK;
return WERR_OK;
}
info1->status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY;
info1->dns_domain_name = talloc_asprintf(mem_ctx, "%s", lp_realm());
NTSTATUS_TALLOC_CHECK(info1->dns_domain_name);
WERR_TALLOC_CHECK(info1->dns_domain_name);
switch (format_desired) {
case DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT:
info1->status = DRSUAPI_DS_NAME_STATUS_OK;
info1->result_name = talloc_asprintf(mem_ctx, "%s\\",
lp_workgroup());
NTSTATUS_TALLOC_CHECK(info1->result_name);
return NT_STATUS_OK;
WERR_TALLOC_CHECK(info1->result_name);
return WERR_OK;
default:
return NT_STATUS_OK;
return WERR_OK;
}
return NT_STATUS_INVALID_PARAMETER;
return WERR_INVALID_PARAM;
}
default: {
info1->status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND;
return NT_STATUS_OK;
return WERR_OK;
}
}
return NT_STATUS_INVALID_PARAMETER;
return WERR_INVALID_PARAM;
}
/*
drsuapi_DsCrackNames
*/
NTSTATUS dcesrv_drsuapi_DsCrackNames(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
WERROR dcesrv_drsuapi_DsCrackNames(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
struct drsuapi_DsCrackNames *r)
{
NTSTATUS status;
WERROR status;
struct drsuapi_bind_state *b_state;
struct dcesrv_handle *h;
r->out.level = r->in.level;
ZERO_STRUCT(r->out.ctr);
DCESRV_PULL_HANDLE(h, r->in.bind_handle, DRSUAPI_BIND_HANDLE);
DCESRV_PULL_HANDLE_WERR(h, r->in.bind_handle, DRSUAPI_BIND_HANDLE);
b_state = h->data;
switch (r->in.level) {
@ -97,14 +97,14 @@ NTSTATUS dcesrv_drsuapi_DsCrackNames(struct dcesrv_call_state *dce_call, TALLOC_
int i;
r->out.ctr.ctr1 = talloc_p(mem_ctx, struct drsuapi_DsNameCtr1);
NTSTATUS_TALLOC_CHECK(r->out.ctr.ctr1);
WERR_TALLOC_CHECK(r->out.ctr.ctr1);
r->out.ctr.ctr1->count = 0;
r->out.ctr.ctr1->array = NULL;
count = r->in.req.req1.count;
names = talloc_array_p(mem_ctx, struct drsuapi_DsNameInfo1, count);
NTSTATUS_TALLOC_CHECK(names);
WERR_TALLOC_CHECK(names);
for (i=0; i < count; i++) {
status = DsCrackNameOneName(b_state, mem_ctx,
@ -112,7 +112,7 @@ NTSTATUS dcesrv_drsuapi_DsCrackNames(struct dcesrv_call_state *dce_call, TALLOC_
r->in.req.req1.format_desired,
r->in.req.req1.names[i].str,
&names[i]);
if (!NT_STATUS_IS_OK(status)) {
if (!W_ERROR_IS_OK(status)) {
return status;
}
}
@ -120,9 +120,9 @@ NTSTATUS dcesrv_drsuapi_DsCrackNames(struct dcesrv_call_state *dce_call, TALLOC_
r->out.ctr.ctr1->count = count;
r->out.ctr.ctr1->array = names;
return NT_STATUS_OK;
return WERR_OK;
}
}
return NT_STATUS_INVALID_LEVEL;
return WERR_UNKNOWN_LEVEL;
}

View File

@ -34,13 +34,18 @@ static BOOL test_DsBind(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.bind_info = NULL;
r.out.bind_handle = bind_handle;
printf("testing DsBind\n");
status = dcerpc_drsuapi_DsBind(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsBind failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsBind failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsBind failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -72,13 +77,19 @@ static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req1.format_desired = DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT;
names[0].str = talloc_asprintf(mem_ctx, "%s/", lp_realm());
printf("testing DsCrackNames with name '%s' desired format:%d\n",
names[0].str, r.in.req.req1.format_desired);
status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsCrackNames failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -93,13 +104,19 @@ static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req1.format_desired = DRSUAPI_DS_NAME_FORMAT_FQDN_1779;
names[0].str = nt4_domain;
printf("testing DsCrackNames with name '%s' desired format:%d\n",
names[0].str, r.in.req.req1.format_desired);
status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsCrackNames failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -113,13 +130,19 @@ static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req1.format_desired = DRSUAPI_DS_NAME_FORMAT_FQDN_1779;
names[0].str = talloc_asprintf(mem_ctx, "%s%s$", nt4_domain, dcerpc_server_name(p));
printf("testing DsCrackNames with name '%s' desired format:%d\n",
names[0].str, r.in.req.req1.format_desired);
status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsCrackNames failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -133,13 +156,19 @@ static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req1.format_desired = DRSUAPI_DS_NAME_FORMAT_CANONICAL;
names[0].str = FQDN_1779_name;
printf("testing DsCrackNames with name '%s' desired format:%d\n",
names[0].str, r.in.req.req1.format_desired);
status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsCrackNames failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -149,13 +178,19 @@ static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req1.format_desired = DRSUAPI_DS_NAME_FORMAT_DISPLAY;
printf("testing DsCrackNames with name '%s' desired format:%d\n",
names[0].str, r.in.req.req1.format_desired);
status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsCrackNames failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -165,13 +200,19 @@ static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req1.format_desired = DRSUAPI_DS_NAME_FORMAT_GUID;
printf("testing DsCrackNames with name '%s' desired format:%d\n",
names[0].str, r.in.req.req1.format_desired);
status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsCrackNames failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -181,13 +222,19 @@ static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req1.format_desired = DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL;
printf("testing DsCrackNames with name '%s' desired format:%d\n",
names[0].str, r.in.req.req1.format_desired);
status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsCrackNames failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -197,13 +244,19 @@ static BOOL test_DsCrackNames(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.req.req1.format_desired = DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL;
printf("testing DsCrackNames with name '%s' desired format:%d\n",
names[0].str, r.in.req.req1.format_desired);
status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsCrackNames failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));
ret = False;
}
@ -223,72 +276,118 @@ static BOOL test_DsGetDCInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.bind_handle = bind_handle;
r.in.level = 1;
r.in.req.req1.domain_name = talloc_strdup(mem_ctx, lp_realm());
r.in.req.req1.level = 1;
printf("testing DsGetDomainControllerInfo level %d on domainname '%s'\n",
r.in.req.req1.level, r.in.req.req1.domain_name);
status = dcerpc_drsuapi_DsGetDomainControllerInfo(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsGetDomainControllerInfo failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsGetDomainControllerInfo level %d\n"
" with dns domain failed - %s\n",
r.in.req.req1.level, errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsGetDomainControllerInfo level %d\n"
" with dns domain failed - %s\n",
r.in.req.req1.level, win_errstr(r.out.result));
ret = False;
}
r.in.req.req1.level = 2;
printf("testing DsGetDomainControllerInfo level %d on domainname '%s'\n",
r.in.req.req1.level, r.in.req.req1.domain_name);
status = dcerpc_drsuapi_DsGetDomainControllerInfo(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsGetDomainControllerInfo failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsGetDomainControllerInfo level %d\n"
" with dns domain failed - %s\n",
r.in.req.req1.level, errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsGetDomainControllerInfo level %d\n"
" with dns domain failed - %s\n",
r.in.req.req1.level, win_errstr(r.out.result));
ret = False;
}
r.in.req.req1.level = -1;
printf("testing DsGetDomainControllerInfo level %d on domainname '%s'\n",
r.in.req.req1.level, r.in.req.req1.domain_name);
status = dcerpc_drsuapi_DsGetDomainControllerInfo(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsGetDomainControllerInfo failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsGetDomainControllerInfo level %d\n"
" with dns domain failed - %s\n",
r.in.req.req1.level, errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsGetDomainControllerInfo level %d\n"
" with dns domain failed - %s\n",
r.in.req.req1.level, win_errstr(r.out.result));
ret = False;
}
r.in.req.req1.domain_name = talloc_strdup(mem_ctx, lp_workgroup());
r.in.req.req1.level = 2;
printf("testing DsGetDomainControllerInfo level %d on domainname '%s'\n",
r.in.req.req1.level, r.in.req.req1.domain_name);
status = dcerpc_drsuapi_DsGetDomainControllerInfo(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsGetDomainControllerInfo failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsGetDomainControllerInfo level %d\n"
" with netbios domain failed - %s\n",
r.in.req.req1.level, errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsGetDomainControllerInfo level %d\n"
" with netbios domain failed - %s\n",
r.in.req.req1.level, win_errstr(r.out.result));
ret = False;
}
r.in.req.req1.domain_name = "__UNKNOWN_DOMAIN__";
r.in.req.req1.level = 2;
printf("testing DsGetDomainControllerInfo level %d on domainname '%s'\n",
r.in.req.req1.level, r.in.req.req1.domain_name);
status = dcerpc_drsuapi_DsGetDomainControllerInfo(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
if (!NT_STATUS_EQUAL(status, NT_STATUS(0x0000208d))) {
printf("drsuapi_DsGetDomainControllerInfo level %d with invalid domain name\n"
" - %s != NTSTATUS[0x0000208d]\n",
r.in.req.req1.level, errstr);
ret = False;
}
printf("dcerpc_drsuapi_DsGetDomainControllerInfo level %d\n"
" with invalid domain failed - %s\n",
r.in.req.req1.level, errstr);
ret = False;
} else if (!W_ERROR_EQUAL(r.out.result, WERR_DS_OBJ_NOT_FOUND)) {
printf("DsGetDomainControllerInfo level %d\n"
" with invalid domain not expected error (WERR_DS_OBJ_NOT_FOUND) - %s\n",
r.in.req.req1.level, win_errstr(r.out.result));
ret = False;
}
return ret;
@ -304,13 +403,18 @@ static BOOL test_DsUnbind(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx,
r.in.bind_handle = bind_handle;
r.out.bind_handle = bind_handle;
printf("testing DsUnbind\n");
status = dcerpc_drsuapi_DsUnbind(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
const char *errstr = nt_errstr(status);
if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
}
printf("drsuapi_DsUnbind failed - %s\n", errstr);
printf("dcerpc_drsuapi_DsUnbind failed - %s\n", errstr);
ret = False;
} else if (!W_ERROR_IS_OK(r.out.result)) {
printf("DsBind failed - %s\n", win_errstr(r.out.result));
ret = False;
}