r2992: drsuapi uses WERROR not NTSTATUS
authorStefan Metzmacher <metze@samba.org>
Fri, 15 Oct 2004 11:08:14 +0000 (11:08 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:59:55 +0000 (12:59 -0500)
metze

source/include/doserr.h
source/librpc/idl/drsuapi.idl
source/rpc_server/drsuapi/dcesrv_drsuapi.c
source/rpc_server/drsuapi/drsuapi_cracknames.c
source/torture/rpc/drsuapi.c

index e3582889d8b80135995c35fe2b846503bfd91172..ffaad7f936295806a5ad86ae5c0f12ef61f111ff 100644 (file)
 #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
 
index 4a0cc7297e6601ff2b7d03e48f6b68c0824c2b61..f933437edbbfdeba68c42c4ccee489ff15810283 100644 (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();
 }
index 9b9f4df3fcdb0c5f64db3d8a96fba369238f27ed..42022dea016285a51ebe3a1a9dc867232f752adf 100644 (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);
index 1a31d541bae5e06dfa013058f92092f45c4896a3..45b1b362c74f00af1878c10e57bf161e6724fe6e 100644 (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;
 }
index a387aaa3372103a53e1c8588c1b11f848815b2cf..be1582e57f7a60aa683fb696c89cf8ec85c94de1 100644 (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;
        }