r18981: * cleanup some vestiges of old cli_reg.c code and mark some TODO
authorGerald Carter <jerry@samba.org>
Thu, 28 Sep 2006 21:19:08 +0000 (21:19 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:14:53 +0000 (12:14 -0500)
  items in cac_winreg.c
* Get 'net rpc registry enumerate' to list values again
* Fix winreg.idl QueryInfoKey().  The max_subkeysize is the
  max_classlen (we previously had this correct in Samba3")
* fix valgrind error about uninitialized memory and use-before-set
  on size value inmemset() call
* Fix key enumeration in 'net rpc registry enumerate'
* regenerate gen_dir files based on local pidl patches

Please note that the generated ndr files are from my local
copy of pidl.  If you need to regenerate, please apply the
patch that I posted to the samba-technical list earlier today.

21 files changed:
source/libmsrpc/cac_winreg.c
source/librpc/gen_ndr/cli_dfs.c
source/librpc/gen_ndr/cli_echo.c
source/librpc/gen_ndr/cli_eventlog.c
source/librpc/gen_ndr/cli_initshutdown.c
source/librpc/gen_ndr/cli_lsa.c
source/librpc/gen_ndr/cli_netlogon.c
source/librpc/gen_ndr/cli_srvsvc.c
source/librpc/gen_ndr/cli_svcctl.c
source/librpc/gen_ndr/cli_unixinfo.c
source/librpc/gen_ndr/cli_winreg.c
source/librpc/gen_ndr/cli_winreg.h
source/librpc/gen_ndr/cli_wkssvc.c
source/librpc/gen_ndr/ndr_winreg.c
source/librpc/gen_ndr/srv_winreg.c
source/librpc/gen_ndr/srv_winreg.h
source/librpc/gen_ndr/winreg.h
source/librpc/idl/winreg.idl
source/rpc_client/cli_reg.c
source/utils/net.h
source/utils/net_rpc_registry.c

index 9e32a36082daa12ca1d885d231d39a3eec30cf3d..d52f319cb72128f81d97b16bffaab146c2f88419 100644 (file)
@@ -74,7 +74,7 @@ int cac_RegConnect( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
        }
 
        hnd->status =
-               rpccli_winreg_connect( pipe_hnd, mem_ctx, op->in.root,
+               rpccli_winreg_Connect( pipe_hnd, mem_ctx, op->in.root,
                                       op->in.access, key );
 
        if ( !NT_STATUS_IS_OK( hnd->status ) ) {
@@ -280,13 +280,16 @@ int cac_RegEnumKeys( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
        resume_idx = op->out.resume_idx;
 
        do {
+#if 0  /* FIXME!!! */
+
                hnd->status =
-                       rpccli_winreg_enum_key( pipe_hnd, mem_ctx, op->in.key,
+                       rpccli_winreg_EnumKey( pipe_hnd, mem_ctx, op->in.key,
                                                resume_idx, key_name_in,
                                                class_name_in,
                                                &mod_times_out
                                                [num_keys_out] );
 
+#endif
                if ( !NT_STATUS_IS_OK( hnd->status ) ) {
                        /*don't increment any values */
                        break;
@@ -407,9 +410,11 @@ WERROR cac_delete_subkeys_recursive( struct rpc_pipe_client * pipe_hnd,
                struct winreg_String key_string;
                NTSTATUS status;
 
+#if 0  /* FIXME!!! */
                status = rpccli_winreg_enum_key( pipe_hnd, mem_ctx, key,
                                                 cur_key, subkey_name,
                                                 class_buf, &mod_time_buf );
+#endif
 
                if ( !NT_STATUS_IS_OK( status ) )
                        break;
@@ -780,11 +785,13 @@ int cac_RegEnumValues( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
        do {
                ZERO_STRUCT( val_buf );
 
+#if 0
                hnd->status =
                        rpccli_winreg_enum_val( pipe_hnd, mem_ctx, op->in.key,
                                                resume_idx, val_name_buf,
                                                &types_out[num_values_out],
                                                &val_buf );
+#endif
 
                if ( !NT_STATUS_IS_OK( hnd->status ) )
                        break;
index fda91f2f5f4e8b66adfb6876b292c6485b3c3136..a5f4e681e0cf77d8736abee7709d18726e249693 100644 (file)
@@ -18,6 +18,10 @@ NTSTATUS rpccli_dfs_GetManagerVersion(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_GETMANAGERVERSION, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_GetManagerVersion, (ndr_push_flags_fn_t)ndr_push_dfs_GetManagerVersion);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_GetManagerVersion, &r);
        
@@ -49,6 +53,10 @@ NTSTATUS rpccli_dfs_Add(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADD, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Add, (ndr_push_flags_fn_t)ndr_push_dfs_Add);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_Add, &r);
        
@@ -77,6 +85,10 @@ NTSTATUS rpccli_dfs_Remove(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, con
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_REMOVE, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Remove, (ndr_push_flags_fn_t)ndr_push_dfs_Remove);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_Remove, &r);
        
@@ -102,6 +114,10 @@ NTSTATUS rpccli_dfs_SetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_SETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_SetInfo, (ndr_push_flags_fn_t)ndr_push_dfs_SetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_SetInfo, &r);
        
@@ -131,6 +147,10 @@ NTSTATUS rpccli_dfs_GetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_GETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_GetInfo, (ndr_push_flags_fn_t)ndr_push_dfs_GetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_GetInfo, &r);
        
@@ -162,6 +182,10 @@ NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint3
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Enum, (ndr_push_flags_fn_t)ndr_push_dfs_Enum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_Enum, &r);
        
@@ -170,8 +194,12 @@ NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint3
        }
        
        /* Return variables */
-       *info = *r.out.info;
-       *total = *r.out.total;
+       if ( info ) {
+               *info = *r.out.info;
+       }
+       if ( total ) {
+               *total = *r.out.total;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -189,6 +217,10 @@ NTSTATUS rpccli_dfs_Rename(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_RENAME, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Rename, (ndr_push_flags_fn_t)ndr_push_dfs_Rename);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_Rename, &r);
        
@@ -214,6 +246,10 @@ NTSTATUS rpccli_dfs_Move(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_MOVE, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Move, (ndr_push_flags_fn_t)ndr_push_dfs_Move);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_Move, &r);
        
@@ -239,6 +275,10 @@ NTSTATUS rpccli_dfs_ManagerGetConfigInfo(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_MANAGERGETCONFIGINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_ManagerGetConfigInfo, (ndr_push_flags_fn_t)ndr_push_dfs_ManagerGetConfigInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_ManagerGetConfigInfo, &r);
        
@@ -264,6 +304,10 @@ NTSTATUS rpccli_dfs_ManagerSendSiteInfo(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_MANAGERSENDSITEINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_ManagerSendSiteInfo, (ndr_push_flags_fn_t)ndr_push_dfs_ManagerSendSiteInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_ManagerSendSiteInfo, &r);
        
@@ -289,6 +333,10 @@ NTSTATUS rpccli_dfs_AddFtRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADDFTROOT, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_AddFtRoot, (ndr_push_flags_fn_t)ndr_push_dfs_AddFtRoot);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_AddFtRoot, &r);
        
@@ -314,6 +362,10 @@ NTSTATUS rpccli_dfs_RemoveFtRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_REMOVEFTROOT, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_RemoveFtRoot, (ndr_push_flags_fn_t)ndr_push_dfs_RemoveFtRoot);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_RemoveFtRoot, &r);
        
@@ -339,6 +391,10 @@ NTSTATUS rpccli_dfs_AddStdRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADDSTDROOT, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_AddStdRoot, (ndr_push_flags_fn_t)ndr_push_dfs_AddStdRoot);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_AddStdRoot, &r);
        
@@ -364,6 +420,10 @@ NTSTATUS rpccli_dfs_RemoveStdRoot(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_REMOVESTDROOT, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_RemoveStdRoot, (ndr_push_flags_fn_t)ndr_push_dfs_RemoveStdRoot);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_RemoveStdRoot, &r);
        
@@ -389,6 +449,10 @@ NTSTATUS rpccli_dfs_ManagerInitialize(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_MANAGERINITIALIZE, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_ManagerInitialize, (ndr_push_flags_fn_t)ndr_push_dfs_ManagerInitialize);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_ManagerInitialize, &r);
        
@@ -414,6 +478,10 @@ NTSTATUS rpccli_dfs_AddStdRootForced(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADDSTDROOTFORCED, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_AddStdRootForced, (ndr_push_flags_fn_t)ndr_push_dfs_AddStdRootForced);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_AddStdRootForced, &r);
        
@@ -439,6 +507,10 @@ NTSTATUS rpccli_dfs_GetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_GETDCADDRESS, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_GetDcAddress, (ndr_push_flags_fn_t)ndr_push_dfs_GetDcAddress);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_GetDcAddress, &r);
        
@@ -464,6 +536,10 @@ NTSTATUS rpccli_dfs_SetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_SETDCADDRESS, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_SetDcAddress, (ndr_push_flags_fn_t)ndr_push_dfs_SetDcAddress);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_SetDcAddress, &r);
        
@@ -489,6 +565,10 @@ NTSTATUS rpccli_dfs_FlushFtTable(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_FLUSHFTTABLE, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_FlushFtTable, (ndr_push_flags_fn_t)ndr_push_dfs_FlushFtTable);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_FlushFtTable, &r);
        
@@ -514,6 +594,10 @@ NTSTATUS rpccli_dfs_Add2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ADD2, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Add2, (ndr_push_flags_fn_t)ndr_push_dfs_Add2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_Add2, &r);
        
@@ -539,6 +623,10 @@ NTSTATUS rpccli_dfs_Remove2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_REMOVE2, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_Remove2, (ndr_push_flags_fn_t)ndr_push_dfs_Remove2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_Remove2, &r);
        
@@ -569,6 +657,10 @@ NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, con
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_ENUMEX, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_EnumEx, (ndr_push_flags_fn_t)ndr_push_dfs_EnumEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_EnumEx, &r);
        
@@ -577,8 +669,12 @@ NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, con
        }
        
        /* Return variables */
-       *info = *r.out.info;
-       *total = *r.out.total;
+       if ( info ) {
+               *info = *r.out.info;
+       }
+       if ( total ) {
+               *total = *r.out.total;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -596,6 +692,10 @@ NTSTATUS rpccli_dfs_SetInfo2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETDFS, DCERPC_DFS_SETINFO2, &r, (ndr_pull_flags_fn_t)ndr_pull_dfs_SetInfo2, (ndr_push_flags_fn_t)ndr_push_dfs_SetInfo2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(dfs_SetInfo2, &r);
        
index 9cfe744e76d403da04cc24cbae83a10dfe47acb4..c393de477cb32154a15de6afea23161df6002ccd 100644 (file)
@@ -19,6 +19,10 @@ NTSTATUS rpccli_echo_AddOne(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, ui
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_ADDONE, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_AddOne, (ndr_push_flags_fn_t)ndr_push_echo_AddOne);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_AddOne, &r);
        
@@ -47,6 +51,10 @@ NTSTATUS rpccli_echo_EchoData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_ECHODATA, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_EchoData, (ndr_push_flags_fn_t)ndr_push_echo_EchoData);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_EchoData, &r);
        
@@ -75,6 +83,10 @@ NTSTATUS rpccli_echo_SinkData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_SINKDATA, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_SinkData, (ndr_push_flags_fn_t)ndr_push_echo_SinkData);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_SinkData, &r);
        
@@ -101,6 +113,10 @@ NTSTATUS rpccli_echo_SourceData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_SOURCEDATA, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_SourceData, (ndr_push_flags_fn_t)ndr_push_echo_SourceData);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_SourceData, &r);
        
@@ -128,6 +144,10 @@ NTSTATUS rpccli_echo_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTCALL, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestCall, (ndr_push_flags_fn_t)ndr_push_echo_TestCall);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_TestCall, &r);
        
@@ -155,6 +175,10 @@ NTSTATUS rpccli_echo_TestCall2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTCALL2, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestCall2, (ndr_push_flags_fn_t)ndr_push_echo_TestCall2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_TestCall2, &r);
        
@@ -182,6 +206,10 @@ NTSTATUS rpccli_echo_TestSleep(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTSLEEP, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestSleep, (ndr_push_flags_fn_t)ndr_push_echo_TestSleep);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_TestSleep, &r);
        
@@ -211,6 +239,10 @@ NTSTATUS rpccli_echo_TestEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestEnum, (ndr_push_flags_fn_t)ndr_push_echo_TestEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_TestEnum, &r);
        
@@ -240,6 +272,10 @@ NTSTATUS rpccli_echo_TestSurrounding(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTSURROUNDING, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestSurrounding, (ndr_push_flags_fn_t)ndr_push_echo_TestSurrounding);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_TestSurrounding, &r);
        
@@ -267,6 +303,10 @@ NTSTATUS rpccli_echo_TestDoublePointer(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_RPCECHO, DCERPC_ECHO_TESTDOUBLEPOINTER, &r, (ndr_pull_flags_fn_t)ndr_pull_echo_TestDoublePointer, (ndr_push_flags_fn_t)ndr_push_echo_TestDoublePointer);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(echo_TestDoublePointer, &r);
        
index 18ec6a065c94a7a08f6b35fc72a24b1484332dba..8608816b20f6fff7316ce6596cefb5fb2efac078 100644 (file)
@@ -20,6 +20,10 @@ NTSTATUS rpccli_eventlog_ClearEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_CLEAREVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ClearEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_ClearEventLogW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_ClearEventLogW, &r);
        
@@ -45,6 +49,10 @@ NTSTATUS rpccli_eventlog_BackupEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_BACKUPEVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_BackupEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_BackupEventLogW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_BackupEventLogW, &r);
        
@@ -71,6 +79,10 @@ NTSTATUS rpccli_eventlog_CloseEventLog(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_CLOSEEVENTLOG, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_CloseEventLog, (ndr_push_flags_fn_t)ndr_push_eventlog_CloseEventLog);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_CloseEventLog, &r);
        
@@ -97,6 +109,10 @@ NTSTATUS rpccli_eventlog_DeregisterEventSource(struct rpc_pipe_client *cli, TALL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_DEREGISTEREVENTSOURCE, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_DeregisterEventSource, (ndr_push_flags_fn_t)ndr_push_eventlog_DeregisterEventSource);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_DeregisterEventSource, &r);
        
@@ -123,6 +139,10 @@ NTSTATUS rpccli_eventlog_GetNumRecords(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_GETNUMRECORDS, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_GetNumRecords, (ndr_push_flags_fn_t)ndr_push_eventlog_GetNumRecords);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_GetNumRecords, &r);
        
@@ -149,6 +169,10 @@ NTSTATUS rpccli_eventlog_GetOldestRecord(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_GETOLDESTRECORD, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_GetOldestRecord, (ndr_push_flags_fn_t)ndr_push_eventlog_GetOldestRecord);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_GetOldestRecord, &r);
        
@@ -174,6 +198,10 @@ NTSTATUS rpccli_eventlog_ChangeNotify(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_CHANGENOTIFY, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ChangeNotify, (ndr_push_flags_fn_t)ndr_push_eventlog_ChangeNotify);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_ChangeNotify, &r);
        
@@ -204,6 +232,10 @@ NTSTATUS rpccli_eventlog_OpenEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_OPENEVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_OpenEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_OpenEventLogW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_OpenEventLogW, &r);
        
@@ -230,6 +262,10 @@ NTSTATUS rpccli_eventlog_RegisterEventSourceW(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REGISTEREVENTSOURCEW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_RegisterEventSourceW, (ndr_push_flags_fn_t)ndr_push_eventlog_RegisterEventSourceW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_RegisterEventSourceW, &r);
        
@@ -255,6 +291,10 @@ NTSTATUS rpccli_eventlog_OpenBackupEventLogW(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_OPENBACKUPEVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_OpenBackupEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_OpenBackupEventLogW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_OpenBackupEventLogW, &r);
        
@@ -284,6 +324,10 @@ NTSTATUS rpccli_eventlog_ReadEventLogW(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_READEVENTLOGW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ReadEventLogW, (ndr_push_flags_fn_t)ndr_push_eventlog_ReadEventLogW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_ReadEventLogW, &r);
        
@@ -312,6 +356,10 @@ NTSTATUS rpccli_eventlog_ReportEventW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REPORTEVENTW, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ReportEventW, (ndr_push_flags_fn_t)ndr_push_eventlog_ReportEventW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_ReportEventW, &r);
        
@@ -337,6 +385,10 @@ NTSTATUS rpccli_eventlog_ClearEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_CLEAREVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ClearEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_ClearEventLogA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_ClearEventLogA, &r);
        
@@ -362,6 +414,10 @@ NTSTATUS rpccli_eventlog_BackupEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_BACKUPEVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_BackupEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_BackupEventLogA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_BackupEventLogA, &r);
        
@@ -387,6 +443,10 @@ NTSTATUS rpccli_eventlog_OpenEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_OPENEVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_OpenEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_OpenEventLogA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_OpenEventLogA, &r);
        
@@ -412,6 +472,10 @@ NTSTATUS rpccli_eventlog_RegisterEventSourceA(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REGISTEREVENTSOURCEA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_RegisterEventSourceA, (ndr_push_flags_fn_t)ndr_push_eventlog_RegisterEventSourceA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_RegisterEventSourceA, &r);
        
@@ -437,6 +501,10 @@ NTSTATUS rpccli_eventlog_OpenBackupEventLogA(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_OPENBACKUPEVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_OpenBackupEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_OpenBackupEventLogA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_OpenBackupEventLogA, &r);
        
@@ -462,6 +530,10 @@ NTSTATUS rpccli_eventlog_ReadEventLogA(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_READEVENTLOGA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ReadEventLogA, (ndr_push_flags_fn_t)ndr_push_eventlog_ReadEventLogA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_ReadEventLogA, &r);
        
@@ -487,6 +559,10 @@ NTSTATUS rpccli_eventlog_ReportEventA(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REPORTEVENTA, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_ReportEventA, (ndr_push_flags_fn_t)ndr_push_eventlog_ReportEventA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_ReportEventA, &r);
        
@@ -512,6 +588,10 @@ NTSTATUS rpccli_eventlog_RegisterClusterSvc(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_REGISTERCLUSTERSVC, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_RegisterClusterSvc, (ndr_push_flags_fn_t)ndr_push_eventlog_RegisterClusterSvc);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_RegisterClusterSvc, &r);
        
@@ -537,6 +617,10 @@ NTSTATUS rpccli_eventlog_DeregisterClusterSvc(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_DEREGISTERCLUSTERSVC, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_DeregisterClusterSvc, (ndr_push_flags_fn_t)ndr_push_eventlog_DeregisterClusterSvc);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_DeregisterClusterSvc, &r);
        
@@ -562,6 +646,10 @@ NTSTATUS rpccli_eventlog_WriteClusterEvents(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_WRITECLUSTEREVENTS, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_WriteClusterEvents, (ndr_push_flags_fn_t)ndr_push_eventlog_WriteClusterEvents);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_WriteClusterEvents, &r);
        
@@ -587,6 +675,10 @@ NTSTATUS rpccli_eventlog_GetLogIntormation(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_GETLOGINTORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_GetLogIntormation, (ndr_push_flags_fn_t)ndr_push_eventlog_GetLogIntormation);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_GetLogIntormation, &r);
        
@@ -613,6 +705,10 @@ NTSTATUS rpccli_eventlog_FlushEventLog(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_EVENTLOG, DCERPC_EVENTLOG_FLUSHEVENTLOG, &r, (ndr_pull_flags_fn_t)ndr_pull_eventlog_FlushEventLog, (ndr_push_flags_fn_t)ndr_push_eventlog_FlushEventLog);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(eventlog_FlushEventLog, &r);
        
index 689c63983852456938c9076d2fa4cdd260740509..02a4f9ad0a49bba4f7ee082156bb1d86d1fe9d55 100644 (file)
@@ -23,6 +23,10 @@ NTSTATUS rpccli_initshutdown_Init(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_INITSHUTDOWN, DCERPC_INITSHUTDOWN_INIT, &r, (ndr_pull_flags_fn_t)ndr_pull_initshutdown_Init, (ndr_push_flags_fn_t)ndr_push_initshutdown_Init);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(initshutdown_Init, &r);
        
@@ -49,6 +53,10 @@ NTSTATUS rpccli_initshutdown_Abort(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_INITSHUTDOWN, DCERPC_INITSHUTDOWN_ABORT, &r, (ndr_pull_flags_fn_t)ndr_pull_initshutdown_Abort, (ndr_push_flags_fn_t)ndr_push_initshutdown_Abort);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(initshutdown_Abort, &r);
        
@@ -80,6 +88,10 @@ NTSTATUS rpccli_initshutdown_InitEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_INITSHUTDOWN, DCERPC_INITSHUTDOWN_INITEX, &r, (ndr_pull_flags_fn_t)ndr_pull_initshutdown_InitEx, (ndr_push_flags_fn_t)ndr_push_initshutdown_InitEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(initshutdown_InitEx, &r);
        
index e7be9032e5c687258d93f2a0bc196ae3ee2647e1..063b78f7f632f30da43323705d16f93f8952e523 100644 (file)
@@ -19,6 +19,10 @@ NTSTATUS rpccli_lsa_Close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, stru
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CLOSE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_Close, (ndr_push_flags_fn_t)ndr_push_lsa_Close);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_Close, &r);
        
@@ -46,6 +50,10 @@ NTSTATUS rpccli_lsa_Delete(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, str
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_DELETE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_Delete, (ndr_push_flags_fn_t)ndr_push_lsa_Delete);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_Delete, &r);
        
@@ -74,6 +82,10 @@ NTSTATUS rpccli_lsa_EnumPrivs(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMPRIVS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumPrivs, (ndr_push_flags_fn_t)ndr_push_lsa_EnumPrivs);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_EnumPrivs, &r);
        
@@ -103,6 +115,10 @@ NTSTATUS rpccli_lsa_QuerySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QuerySecurity, (ndr_push_flags_fn_t)ndr_push_lsa_QuerySecurity);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_QuerySecurity, &r);
        
@@ -111,7 +127,9 @@ NTSTATUS rpccli_lsa_QuerySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        }
        
        /* Return variables */
-       *sdbuf = *r.out.sdbuf;
+       if ( sdbuf ) {
+               *sdbuf = *r.out.sdbuf;
+       }
        
        /* Return result */
        return r.out.result;
@@ -129,6 +147,10 @@ NTSTATUS rpccli_lsa_SetSecObj(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETSECOBJ, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetSecObj, (ndr_push_flags_fn_t)ndr_push_lsa_SetSecObj);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetSecObj, &r);
        
@@ -154,6 +176,10 @@ NTSTATUS rpccli_lsa_ChangePassword(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CHANGEPASSWORD, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_ChangePassword, (ndr_push_flags_fn_t)ndr_push_lsa_ChangePassword);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_ChangePassword, &r);
        
@@ -182,6 +208,10 @@ NTSTATUS rpccli_lsa_OpenPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_OpenPolicy);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_OpenPolicy, &r);
        
@@ -210,6 +240,10 @@ NTSTATUS rpccli_lsa_QueryInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYINFOPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryInfoPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_QueryInfoPolicy);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_QueryInfoPolicy, &r);
        
@@ -218,7 +252,9 @@ NTSTATUS rpccli_lsa_QueryInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return r.out.result;
@@ -236,6 +272,10 @@ NTSTATUS rpccli_lsa_SetInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETINFOPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetInfoPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_SetInfoPolicy);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetInfoPolicy, &r);
        
@@ -261,6 +301,10 @@ NTSTATUS rpccli_lsa_ClearAuditLog(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CLEARAUDITLOG, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_ClearAuditLog, (ndr_push_flags_fn_t)ndr_push_lsa_ClearAuditLog);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_ClearAuditLog, &r);
        
@@ -289,6 +333,10 @@ NTSTATUS rpccli_lsa_CreateAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATEACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateAccount, (ndr_push_flags_fn_t)ndr_push_lsa_CreateAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CreateAccount, &r);
        
@@ -318,6 +366,10 @@ NTSTATUS rpccli_lsa_EnumAccounts(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMACCOUNTS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumAccounts, (ndr_push_flags_fn_t)ndr_push_lsa_EnumAccounts);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_EnumAccounts, &r);
        
@@ -348,6 +400,10 @@ NTSTATUS rpccli_lsa_CreateTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATETRUSTEDDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateTrustedDomain, (ndr_push_flags_fn_t)ndr_push_lsa_CreateTrustedDomain);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomain, &r);
        
@@ -377,6 +433,10 @@ NTSTATUS rpccli_lsa_EnumTrustDom(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMTRUSTDOM, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumTrustDom, (ndr_push_flags_fn_t)ndr_push_lsa_EnumTrustDom);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_EnumTrustDom, &r);
        
@@ -410,6 +470,10 @@ NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPNAMES, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupNames, (ndr_push_flags_fn_t)ndr_push_lsa_LookupNames);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupNames, &r);
        
@@ -418,7 +482,9 @@ NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        }
        
        /* Return variables */
-       *domains = *r.out.domains;
+       if ( domains ) {
+               *domains = *r.out.domains;
+       }
        *sids = *r.out.sids;
        *count = *r.out.count;
        
@@ -443,6 +509,10 @@ NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPSIDS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupSids, (ndr_push_flags_fn_t)ndr_push_lsa_LookupSids);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupSids, &r);
        
@@ -451,7 +521,9 @@ NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        }
        
        /* Return variables */
-       *domains = *r.out.domains;
+       if ( domains ) {
+               *domains = *r.out.domains;
+       }
        *names = *r.out.names;
        *count = *r.out.count;
        
@@ -474,6 +546,10 @@ NTSTATUS rpccli_lsa_CreateSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATESECRET, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateSecret, (ndr_push_flags_fn_t)ndr_push_lsa_CreateSecret);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CreateSecret, &r);
        
@@ -503,6 +579,10 @@ NTSTATUS rpccli_lsa_OpenAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenAccount, (ndr_push_flags_fn_t)ndr_push_lsa_OpenAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_OpenAccount, &r);
        
@@ -530,6 +610,10 @@ NTSTATUS rpccli_lsa_EnumPrivsAccount(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMPRIVSACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumPrivsAccount, (ndr_push_flags_fn_t)ndr_push_lsa_EnumPrivsAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_EnumPrivsAccount, &r);
        
@@ -538,7 +622,9 @@ NTSTATUS rpccli_lsa_EnumPrivsAccount(struct rpc_pipe_client *cli, TALLOC_CTX *me
        }
        
        /* Return variables */
-       *privs = *r.out.privs;
+       if ( privs ) {
+               *privs = *r.out.privs;
+       }
        
        /* Return result */
        return r.out.result;
@@ -558,6 +644,10 @@ NTSTATUS rpccli_lsa_AddPrivilegesToAccount(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ADDPRIVILEGESTOACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_AddPrivilegesToAccount, (ndr_push_flags_fn_t)ndr_push_lsa_AddPrivilegesToAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_AddPrivilegesToAccount, &r);
        
@@ -586,6 +676,10 @@ NTSTATUS rpccli_lsa_RemovePrivilegesFromAccount(struct rpc_pipe_client *cli, TAL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_REMOVEPRIVILEGESFROMACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_RemovePrivilegesFromAccount, (ndr_push_flags_fn_t)ndr_push_lsa_RemovePrivilegesFromAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_RemovePrivilegesFromAccount, &r);
        
@@ -611,6 +705,10 @@ NTSTATUS rpccli_lsa_GetQuotasForAccount(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_GETQUOTASFORACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_GetQuotasForAccount, (ndr_push_flags_fn_t)ndr_push_lsa_GetQuotasForAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_GetQuotasForAccount, &r);
        
@@ -636,6 +734,10 @@ NTSTATUS rpccli_lsa_SetQuotasForAccount(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETQUOTASFORACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetQuotasForAccount, (ndr_push_flags_fn_t)ndr_push_lsa_SetQuotasForAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetQuotasForAccount, &r);
        
@@ -661,6 +763,10 @@ NTSTATUS rpccli_lsa_GetSystemAccessAccount(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_GETSYSTEMACCESSACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_GetSystemAccessAccount, (ndr_push_flags_fn_t)ndr_push_lsa_GetSystemAccessAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_GetSystemAccessAccount, &r);
        
@@ -686,6 +792,10 @@ NTSTATUS rpccli_lsa_SetSystemAccessAccount(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETSYSTEMACCESSACCOUNT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetSystemAccessAccount, (ndr_push_flags_fn_t)ndr_push_lsa_SetSystemAccessAccount);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetSystemAccessAccount, &r);
        
@@ -714,6 +824,10 @@ NTSTATUS rpccli_lsa_OpenTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENTRUSTEDDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenTrustedDomain, (ndr_push_flags_fn_t)ndr_push_lsa_OpenTrustedDomain);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_OpenTrustedDomain, &r);
        
@@ -742,6 +856,10 @@ NTSTATUS rpccli_lsa_QueryTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYTRUSTEDDOMAININFO, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryTrustedDomainInfo, (ndr_push_flags_fn_t)ndr_push_lsa_QueryTrustedDomainInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfo, &r);
        
@@ -750,7 +868,9 @@ NTSTATUS rpccli_lsa_QueryTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_C
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return r.out.result;
@@ -768,6 +888,10 @@ NTSTATUS rpccli_lsa_SetInformationTrustedDomain(struct rpc_pipe_client *cli, TAL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETINFORMATIONTRUSTEDDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetInformationTrustedDomain, (ndr_push_flags_fn_t)ndr_push_lsa_SetInformationTrustedDomain);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetInformationTrustedDomain, &r);
        
@@ -796,6 +920,10 @@ NTSTATUS rpccli_lsa_OpenSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENSECRET, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenSecret, (ndr_push_flags_fn_t)ndr_push_lsa_OpenSecret);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_OpenSecret, &r);
        
@@ -825,6 +953,10 @@ NTSTATUS rpccli_lsa_SetSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETSECRET, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetSecret, (ndr_push_flags_fn_t)ndr_push_lsa_SetSecret);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetSecret, &r);
        
@@ -855,6 +987,10 @@ NTSTATUS rpccli_lsa_QuerySecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYSECRET, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QuerySecret, (ndr_push_flags_fn_t)ndr_push_lsa_QuerySecret);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_QuerySecret, &r);
        
@@ -863,10 +999,18 @@ NTSTATUS rpccli_lsa_QuerySecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        }
        
        /* Return variables */
-       *new_val = *r.out.new_val;
-       *new_mtime = *r.out.new_mtime;
-       *old_val = *r.out.old_val;
-       *old_mtime = *r.out.old_mtime;
+       if ( new_val ) {
+               *new_val = *r.out.new_val;
+       }
+       if ( new_mtime ) {
+               *new_mtime = *r.out.new_mtime;
+       }
+       if ( old_val ) {
+               *old_val = *r.out.old_val;
+       }
+       if ( old_mtime ) {
+               *old_mtime = *r.out.old_mtime;
+       }
        
        /* Return result */
        return r.out.result;
@@ -886,6 +1030,10 @@ NTSTATUS rpccli_lsa_LookupPrivValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPPRIVVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupPrivValue, (ndr_push_flags_fn_t)ndr_push_lsa_LookupPrivValue);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupPrivValue, &r);
        
@@ -914,6 +1062,10 @@ NTSTATUS rpccli_lsa_LookupPrivName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPPRIVNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupPrivName, (ndr_push_flags_fn_t)ndr_push_lsa_LookupPrivName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupPrivName, &r);
        
@@ -922,7 +1074,9 @@ NTSTATUS rpccli_lsa_LookupPrivName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        }
        
        /* Return variables */
-       *name = *r.out.name;
+       if ( name ) {
+               *name = *r.out.name;
+       }
        
        /* Return result */
        return r.out.result;
@@ -944,6 +1098,10 @@ NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPPRIVDISPLAYNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupPrivDisplayName, (ndr_push_flags_fn_t)ndr_push_lsa_LookupPrivDisplayName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupPrivDisplayName, &r);
        
@@ -952,7 +1110,9 @@ NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli, TALLOC_CT
        }
        
        /* Return variables */
-       *disp_name = *r.out.disp_name;
+       if ( disp_name ) {
+               *disp_name = *r.out.disp_name;
+       }
        *language_id = *r.out.language_id;
        
        /* Return result */
@@ -971,6 +1131,10 @@ NTSTATUS rpccli_lsa_DeleteObject(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_DELETEOBJECT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_DeleteObject, (ndr_push_flags_fn_t)ndr_push_lsa_DeleteObject);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_DeleteObject, &r);
        
@@ -998,6 +1162,10 @@ NTSTATUS rpccli_lsa_EnumAccountsWithUserRight(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMACCOUNTSWITHUSERRIGHT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumAccountsWithUserRight, (ndr_push_flags_fn_t)ndr_push_lsa_EnumAccountsWithUserRight);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_EnumAccountsWithUserRight, &r);
        
@@ -1026,6 +1194,10 @@ NTSTATUS rpccli_lsa_EnumAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMACCOUNTRIGHTS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumAccountRights, (ndr_push_flags_fn_t)ndr_push_lsa_EnumAccountRights);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_EnumAccountRights, &r);
        
@@ -1055,6 +1227,10 @@ NTSTATUS rpccli_lsa_AddAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ADDACCOUNTRIGHTS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_AddAccountRights, (ndr_push_flags_fn_t)ndr_push_lsa_AddAccountRights);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_AddAccountRights, &r);
        
@@ -1084,6 +1260,10 @@ NTSTATUS rpccli_lsa_RemoveAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_REMOVEACCOUNTRIGHTS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_RemoveAccountRights, (ndr_push_flags_fn_t)ndr_push_lsa_RemoveAccountRights);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_RemoveAccountRights, &r);
        
@@ -1112,6 +1292,10 @@ NTSTATUS rpccli_lsa_QueryTrustedDomainInfoBySid(struct rpc_pipe_client *cli, TAL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYTRUSTEDDOMAININFOBYSID, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryTrustedDomainInfoBySid, (ndr_push_flags_fn_t)ndr_push_lsa_QueryTrustedDomainInfoBySid);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfoBySid, &r);
        
@@ -1120,7 +1304,9 @@ NTSTATUS rpccli_lsa_QueryTrustedDomainInfoBySid(struct rpc_pipe_client *cli, TAL
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return r.out.result;
@@ -1138,6 +1324,10 @@ NTSTATUS rpccli_lsa_SetTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETTRUSTEDDOMAININFO, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetTrustedDomainInfo, (ndr_push_flags_fn_t)ndr_push_lsa_SetTrustedDomainInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetTrustedDomainInfo, &r);
        
@@ -1165,6 +1355,10 @@ NTSTATUS rpccli_lsa_DeleteTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_DELETETRUSTEDDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_DeleteTrustedDomain, (ndr_push_flags_fn_t)ndr_push_lsa_DeleteTrustedDomain);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_DeleteTrustedDomain, &r);
        
@@ -1190,6 +1384,10 @@ NTSTATUS rpccli_lsa_StorePrivateData(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_STOREPRIVATEDATA, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_StorePrivateData, (ndr_push_flags_fn_t)ndr_push_lsa_StorePrivateData);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_StorePrivateData, &r);
        
@@ -1215,6 +1413,10 @@ NTSTATUS rpccli_lsa_RetrievePrivateData(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_RETRIEVEPRIVATEDATA, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_RetrievePrivateData, (ndr_push_flags_fn_t)ndr_push_lsa_RetrievePrivateData);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_RetrievePrivateData, &r);
        
@@ -1243,6 +1445,10 @@ NTSTATUS rpccli_lsa_OpenPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENPOLICY2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenPolicy2, (ndr_push_flags_fn_t)ndr_push_lsa_OpenPolicy2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_OpenPolicy2, &r);
        
@@ -1272,6 +1478,10 @@ NTSTATUS rpccli_lsa_GetUserName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_GETUSERNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_GetUserName, (ndr_push_flags_fn_t)ndr_push_lsa_GetUserName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_GetUserName, &r);
        
@@ -1280,8 +1490,12 @@ NTSTATUS rpccli_lsa_GetUserName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        }
        
        /* Return variables */
-       *account_name = *r.out.account_name;
-       *authority_name = *r.out.authority_name;
+       if ( account_name ) {
+               *account_name = *r.out.account_name;
+       }
+       if ( authority_name ) {
+               *authority_name = *r.out.authority_name;
+       }
        
        /* Return result */
        return r.out.result;
@@ -1301,6 +1515,10 @@ NTSTATUS rpccli_lsa_QueryInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYINFOPOLICY2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryInfoPolicy2, (ndr_push_flags_fn_t)ndr_push_lsa_QueryInfoPolicy2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_QueryInfoPolicy2, &r);
        
@@ -1309,7 +1527,9 @@ NTSTATUS rpccli_lsa_QueryInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *me
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return r.out.result;
@@ -1327,6 +1547,10 @@ NTSTATUS rpccli_lsa_SetInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETINFOPOLICY2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetInfoPolicy2, (ndr_push_flags_fn_t)ndr_push_lsa_SetInfoPolicy2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetInfoPolicy2, &r);
        
@@ -1355,6 +1579,10 @@ NTSTATUS rpccli_lsa_QueryTrustedDomainInfoByName(struct rpc_pipe_client *cli, TA
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYTRUSTEDDOMAININFOBYNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryTrustedDomainInfoByName, (ndr_push_flags_fn_t)ndr_push_lsa_QueryTrustedDomainInfoByName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_QueryTrustedDomainInfoByName, &r);
        
@@ -1363,7 +1591,9 @@ NTSTATUS rpccli_lsa_QueryTrustedDomainInfoByName(struct rpc_pipe_client *cli, TA
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return r.out.result;
@@ -1385,6 +1615,10 @@ NTSTATUS rpccli_lsa_SetTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETTRUSTEDDOMAININFOBYNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetTrustedDomainInfoByName, (ndr_push_flags_fn_t)ndr_push_lsa_SetTrustedDomainInfoByName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetTrustedDomainInfoByName, &r);
        
@@ -1413,6 +1647,10 @@ NTSTATUS rpccli_lsa_EnumTrustedDomainsEx(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_ENUMTRUSTEDDOMAINSEX, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_EnumTrustedDomainsEx, (ndr_push_flags_fn_t)ndr_push_lsa_EnumTrustedDomainsEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_EnumTrustedDomainsEx, &r);
        
@@ -1440,6 +1678,10 @@ NTSTATUS rpccli_lsa_CreateTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATETRUSTEDDOMAINEX, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateTrustedDomainEx, (ndr_push_flags_fn_t)ndr_push_lsa_CreateTrustedDomainEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomainEx, &r);
        
@@ -1466,6 +1708,10 @@ NTSTATUS rpccli_lsa_CloseTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CLOSETRUSTEDDOMAINEX, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CloseTrustedDomainEx, (ndr_push_flags_fn_t)ndr_push_lsa_CloseTrustedDomainEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CloseTrustedDomainEx, &r);
        
@@ -1494,6 +1740,10 @@ NTSTATUS rpccli_lsa_QueryDomainInformationPolicy(struct rpc_pipe_client *cli, TA
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_QUERYDOMAININFORMATIONPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_QueryDomainInformationPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_QueryDomainInformationPolicy);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_QueryDomainInformationPolicy, &r);
        
@@ -1502,7 +1752,9 @@ NTSTATUS rpccli_lsa_QueryDomainInformationPolicy(struct rpc_pipe_client *cli, TA
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return r.out.result;
@@ -1523,6 +1775,10 @@ NTSTATUS rpccli_lsa_SetDomainInformationPolicy(struct rpc_pipe_client *cli, TALL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_SETDOMAININFORMATIONPOLICY, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_SetDomainInformationPolicy, (ndr_push_flags_fn_t)ndr_push_lsa_SetDomainInformationPolicy);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_SetDomainInformationPolicy, &r);
        
@@ -1551,6 +1807,10 @@ NTSTATUS rpccli_lsa_OpenTrustedDomainByName(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_OPENTRUSTEDDOMAINBYNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_OpenTrustedDomainByName, (ndr_push_flags_fn_t)ndr_push_lsa_OpenTrustedDomainByName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_OpenTrustedDomainByName, &r);
        
@@ -1577,6 +1837,10 @@ NTSTATUS rpccli_lsa_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_TESTCALL, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_TestCall, (ndr_push_flags_fn_t)ndr_push_lsa_TestCall);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_TestCall, &r);
        
@@ -1609,6 +1873,10 @@ NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPSIDS2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupSids2, (ndr_push_flags_fn_t)ndr_push_lsa_LookupSids2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupSids2, &r);
        
@@ -1617,7 +1885,9 @@ NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        }
        
        /* Return variables */
-       *domains = *r.out.domains;
+       if ( domains ) {
+               *domains = *r.out.domains;
+       }
        *names = *r.out.names;
        *count = *r.out.count;
        
@@ -1645,6 +1915,10 @@ NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPNAMES2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupNames2, (ndr_push_flags_fn_t)ndr_push_lsa_LookupNames2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupNames2, &r);
        
@@ -1653,7 +1927,9 @@ NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        }
        
        /* Return variables */
-       *domains = *r.out.domains;
+       if ( domains ) {
+               *domains = *r.out.domains;
+       }
        *sids = *r.out.sids;
        *count = *r.out.count;
        
@@ -1673,6 +1949,10 @@ NTSTATUS rpccli_lsa_CreateTrustedDomainEx2(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREATETRUSTEDDOMAINEX2, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CreateTrustedDomainEx2, (ndr_push_flags_fn_t)ndr_push_lsa_CreateTrustedDomainEx2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CreateTrustedDomainEx2, &r);
        
@@ -1698,6 +1978,10 @@ NTSTATUS rpccli_lsa_CREDRWRITE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRWRITE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRWRITE, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRWRITE);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRWRITE, &r);
        
@@ -1723,6 +2007,10 @@ NTSTATUS rpccli_lsa_CREDRREAD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRREAD, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRREAD, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRREAD);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRREAD, &r);
        
@@ -1748,6 +2036,10 @@ NTSTATUS rpccli_lsa_CREDRENUMERATE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRENUMERATE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRENUMERATE, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRENUMERATE);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRENUMERATE, &r);
        
@@ -1773,6 +2065,10 @@ NTSTATUS rpccli_lsa_CREDRWRITEDOMAINCREDENTIALS(struct rpc_pipe_client *cli, TAL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRWRITEDOMAINCREDENTIALS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRWRITEDOMAINCREDENTIALS, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRWRITEDOMAINCREDENTIALS);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRWRITEDOMAINCREDENTIALS, &r);
        
@@ -1798,6 +2094,10 @@ NTSTATUS rpccli_lsa_CREDRREADDOMAINCREDENTIALS(struct rpc_pipe_client *cli, TALL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRREADDOMAINCREDENTIALS, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRREADDOMAINCREDENTIALS, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRREADDOMAINCREDENTIALS);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRREADDOMAINCREDENTIALS, &r);
        
@@ -1823,6 +2123,10 @@ NTSTATUS rpccli_lsa_CREDRDELETE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRDELETE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRDELETE, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRDELETE);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRDELETE, &r);
        
@@ -1848,6 +2152,10 @@ NTSTATUS rpccli_lsa_CREDRGETTARGETINFO(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRGETTARGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRGETTARGETINFO, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRGETTARGETINFO);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRGETTARGETINFO, &r);
        
@@ -1873,6 +2181,10 @@ NTSTATUS rpccli_lsa_CREDRPROFILELOADED(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRPROFILELOADED, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRPROFILELOADED, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRPROFILELOADED);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRPROFILELOADED, &r);
        
@@ -1906,6 +2218,10 @@ NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPNAMES3, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupNames3, (ndr_push_flags_fn_t)ndr_push_lsa_LookupNames3);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupNames3, &r);
        
@@ -1914,7 +2230,9 @@ NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        }
        
        /* Return variables */
-       *domains = *r.out.domains;
+       if ( domains ) {
+               *domains = *r.out.domains;
+       }
        *sids = *r.out.sids;
        *count = *r.out.count;
        
@@ -1934,6 +2252,10 @@ NTSTATUS rpccli_lsa_CREDRGETSESSIONTYPES(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRGETSESSIONTYPES, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRGETSESSIONTYPES, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRGETSESSIONTYPES);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRGETSESSIONTYPES, &r);
        
@@ -1959,6 +2281,10 @@ NTSTATUS rpccli_lsa_LSARREGISTERAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARREGISTERAUDITEVENT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARREGISTERAUDITEVENT, (ndr_push_flags_fn_t)ndr_push_lsa_LSARREGISTERAUDITEVENT);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSARREGISTERAUDITEVENT, &r);
        
@@ -1984,6 +2310,10 @@ NTSTATUS rpccli_lsa_LSARGENAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARGENAUDITEVENT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARGENAUDITEVENT, (ndr_push_flags_fn_t)ndr_push_lsa_LSARGENAUDITEVENT);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSARGENAUDITEVENT, &r);
        
@@ -2009,6 +2339,10 @@ NTSTATUS rpccli_lsa_LSARUNREGISTERAUDITEVENT(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARUNREGISTERAUDITEVENT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARUNREGISTERAUDITEVENT, (ndr_push_flags_fn_t)ndr_push_lsa_LSARUNREGISTERAUDITEVENT);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSARUNREGISTERAUDITEVENT, &r);
        
@@ -2034,6 +2368,10 @@ NTSTATUS rpccli_lsa_LSARQUERYFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARQUERYFORESTTRUSTINFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARQUERYFORESTTRUSTINFORMATION, (ndr_push_flags_fn_t)ndr_push_lsa_LSARQUERYFORESTTRUSTINFORMATION);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSARQUERYFORESTTRUSTINFORMATION, &r);
        
@@ -2059,6 +2397,10 @@ NTSTATUS rpccli_lsa_LSARSETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARSETFORESTTRUSTINFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARSETFORESTTRUSTINFORMATION, (ndr_push_flags_fn_t)ndr_push_lsa_LSARSETFORESTTRUSTINFORMATION);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSARSETFORESTTRUSTINFORMATION, &r);
        
@@ -2084,6 +2426,10 @@ NTSTATUS rpccli_lsa_CREDRRENAME(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_CREDRRENAME, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_CREDRRENAME, (ndr_push_flags_fn_t)ndr_push_lsa_CREDRRENAME);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_CREDRRENAME, &r);
        
@@ -2115,6 +2461,10 @@ NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPSIDS3, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupSids3, (ndr_push_flags_fn_t)ndr_push_lsa_LookupSids3);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupSids3, &r);
        
@@ -2123,7 +2473,9 @@ NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        }
        
        /* Return variables */
-       *domains = *r.out.domains;
+       if ( domains ) {
+               *domains = *r.out.domains;
+       }
        *names = *r.out.names;
        *count = *r.out.count;
        
@@ -2150,6 +2502,10 @@ NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LOOKUPNAMES4, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LookupNames4, (ndr_push_flags_fn_t)ndr_push_lsa_LookupNames4);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LookupNames4, &r);
        
@@ -2158,7 +2514,9 @@ NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        }
        
        /* Return variables */
-       *domains = *r.out.domains;
+       if ( domains ) {
+               *domains = *r.out.domains;
+       }
        *sids = *r.out.sids;
        *count = *r.out.count;
        
@@ -2178,6 +2536,10 @@ NTSTATUS rpccli_lsa_LSAROPENPOLICYSCE(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSAROPENPOLICYSCE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSAROPENPOLICYSCE, (ndr_push_flags_fn_t)ndr_push_lsa_LSAROPENPOLICYSCE);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSAROPENPOLICYSCE, &r);
        
@@ -2203,6 +2565,10 @@ NTSTATUS rpccli_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct rpc_pipe_client *c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARADTREGISTERSECURITYEVENTSOURCE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARADTREGISTERSECURITYEVENTSOURCE, (ndr_push_flags_fn_t)ndr_push_lsa_LSARADTREGISTERSECURITYEVENTSOURCE);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSARADTREGISTERSECURITYEVENTSOURCE, &r);
        
@@ -2228,6 +2594,10 @@ NTSTATUS rpccli_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct rpc_pipe_client
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARADTUNREGISTERSECURITYEVENTSOURCE, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE, (ndr_push_flags_fn_t)ndr_push_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE, &r);
        
@@ -2253,6 +2623,10 @@ NTSTATUS rpccli_lsa_LSARADTREPORTSECURITYEVENT(struct rpc_pipe_client *cli, TALL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_LSARPC, DCERPC_LSA_LSARADTREPORTSECURITYEVENT, &r, (ndr_pull_flags_fn_t)ndr_pull_lsa_LSARADTREPORTSECURITYEVENT, (ndr_push_flags_fn_t)ndr_push_lsa_LSARADTREPORTSECURITYEVENT);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(lsa_LSARADTREPORTSECURITYEVENT, &r);
        
index 6985d025a9d92f0c9753dc339677c0d97d496c7d..1f4e6c7867daf88504dfbe7c1dbb66fd2047b7e3 100644 (file)
@@ -21,6 +21,10 @@ NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONUASLOGON, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonUasLogon, (ndr_push_flags_fn_t)ndr_push_netr_LogonUasLogon);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonUasLogon, &r);
        
@@ -29,7 +33,9 @@ NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -50,6 +56,10 @@ NTSTATUS rpccli_netr_LogonUasLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONUASLOGOFF, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonUasLogoff, (ndr_push_flags_fn_t)ndr_push_netr_LogonUasLogoff);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonUasLogoff, &r);
        
@@ -83,6 +93,10 @@ NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONSAMLOGON, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonSamLogon, (ndr_push_flags_fn_t)ndr_push_netr_LogonSamLogon);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonSamLogon, &r);
        
@@ -91,7 +105,9 @@ NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        }
        
        /* Return variables */
-       *return_authenticator = *r.out.return_authenticator;
+       if ( return_authenticator ) {
+               *return_authenticator = *r.out.return_authenticator;
+       }
        *validation = *r.out.validation;
        *authoritative = *r.out.authoritative;
        
@@ -117,6 +133,10 @@ NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONSAMLOGOFF, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonSamLogoff, (ndr_push_flags_fn_t)ndr_push_netr_LogonSamLogoff);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonSamLogoff, &r);
        
@@ -125,7 +145,9 @@ NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        }
        
        /* Return variables */
-       *return_authenticator = *r.out.return_authenticator;
+       if ( return_authenticator ) {
+               *return_authenticator = *r.out.return_authenticator;
+       }
        
        /* Return result */
        return r.out.result;
@@ -146,6 +168,10 @@ NTSTATUS rpccli_netr_ServerReqChallenge(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERREQCHALLENGE, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerReqChallenge, (ndr_push_flags_fn_t)ndr_push_netr_ServerReqChallenge);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_ServerReqChallenge, &r);
        
@@ -177,6 +203,10 @@ NTSTATUS rpccli_netr_ServerAuthenticate(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERAUTHENTICATE, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerAuthenticate, (ndr_push_flags_fn_t)ndr_push_netr_ServerAuthenticate);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate, &r);
        
@@ -209,6 +239,10 @@ NTSTATUS rpccli_netr_ServerPasswordSet(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERPASSWORDSET, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerPasswordSet, (ndr_push_flags_fn_t)ndr_push_netr_ServerPasswordSet);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_ServerPasswordSet, &r);
        
@@ -242,6 +276,10 @@ NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DATABASEDELTAS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DatabaseDeltas, (ndr_push_flags_fn_t)ndr_push_netr_DatabaseDeltas);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DatabaseDeltas, &r);
        
@@ -252,7 +290,9 @@ NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        /* Return variables */
        *return_authenticator = *r.out.return_authenticator;
        *sequence_num = *r.out.sequence_num;
-       *delta_enum_array = *r.out.delta_enum_array;
+       if ( delta_enum_array ) {
+               *delta_enum_array = *r.out.delta_enum_array;
+       }
        
        /* Return result */
        return r.out.result;
@@ -277,6 +317,10 @@ NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DATABASESYNC, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DatabaseSync, (ndr_push_flags_fn_t)ndr_push_netr_DatabaseSync);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DatabaseSync, &r);
        
@@ -287,7 +331,9 @@ NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        /* Return variables */
        *return_authenticator = *r.out.return_authenticator;
        *sync_context = *r.out.sync_context;
-       *delta_enum_array = *r.out.delta_enum_array;
+       if ( delta_enum_array ) {
+               *delta_enum_array = *r.out.delta_enum_array;
+       }
        
        /* Return result */
        return r.out.result;
@@ -313,6 +359,10 @@ NTSTATUS rpccli_netr_AccountDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_ACCOUNTDELTAS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_AccountDeltas, (ndr_push_flags_fn_t)ndr_push_netr_AccountDeltas);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_AccountDeltas, &r);
        
@@ -351,6 +401,10 @@ NTSTATUS rpccli_netr_AccountSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_ACCOUNTSYNC, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_AccountSync, (ndr_push_flags_fn_t)ndr_push_netr_AccountSync);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_AccountSync, &r);
        
@@ -384,6 +438,10 @@ NTSTATUS rpccli_netr_GetDcName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_GETDCNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_GetDcName, (ndr_push_flags_fn_t)ndr_push_netr_GetDcName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_GetDcName, &r);
        
@@ -413,6 +471,10 @@ NTSTATUS rpccli_netr_LogonControl(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONCONTROL, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonControl, (ndr_push_flags_fn_t)ndr_push_netr_LogonControl);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonControl, &r);
        
@@ -441,6 +503,10 @@ NTSTATUS rpccli_netr_GetAnyDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_GETANYDCNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_GetAnyDCName, (ndr_push_flags_fn_t)ndr_push_netr_GetAnyDCName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_GetAnyDCName, &r);
        
@@ -471,6 +537,10 @@ NTSTATUS rpccli_netr_LogonControl2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONCONTROL2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonControl2, (ndr_push_flags_fn_t)ndr_push_netr_LogonControl2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonControl2, &r);
        
@@ -503,6 +573,10 @@ NTSTATUS rpccli_netr_ServerAuthenticate2(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERAUTHENTICATE2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerAuthenticate2, (ndr_push_flags_fn_t)ndr_push_netr_ServerAuthenticate2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate2, &r);
        
@@ -538,6 +612,10 @@ NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DATABASESYNC2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DatabaseSync2, (ndr_push_flags_fn_t)ndr_push_netr_DatabaseSync2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DatabaseSync2, &r);
        
@@ -548,7 +626,9 @@ NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        /* Return variables */
        *return_authenticator = *r.out.return_authenticator;
        *sync_context = *r.out.sync_context;
-       *delta_enum_array = *r.out.delta_enum_array;
+       if ( delta_enum_array ) {
+               *delta_enum_array = *r.out.delta_enum_array;
+       }
        
        /* Return result */
        return r.out.result;
@@ -572,6 +652,10 @@ NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DATABASEREDO, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DatabaseRedo, (ndr_push_flags_fn_t)ndr_push_netr_DatabaseRedo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DatabaseRedo, &r);
        
@@ -581,7 +665,9 @@ NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        /* Return variables */
        *return_authenticator = *r.out.return_authenticator;
-       *delta_enum_array = *r.out.delta_enum_array;
+       if ( delta_enum_array ) {
+               *delta_enum_array = *r.out.delta_enum_array;
+       }
        
        /* Return result */
        return r.out.result;
@@ -603,6 +689,10 @@ NTSTATUS rpccli_netr_LogonControl2Ex(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONCONTROL2EX, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonControl2Ex, (ndr_push_flags_fn_t)ndr_push_netr_LogonControl2Ex);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonControl2Ex, &r);
        
@@ -629,6 +719,10 @@ NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINS(struct rpc_pipe_client *cli, TA
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRENUMERATETRUSTEDDOMAINS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINS, (ndr_push_flags_fn_t)ndr_push_netr_NETRENUMERATETRUSTEDDOMAINS);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINS, &r);
        
@@ -659,6 +753,10 @@ NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETDCNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsRGetDCName, (ndr_push_flags_fn_t)ndr_push_netr_DsRGetDCName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DsRGetDCName, &r);
        
@@ -667,7 +765,9 @@ NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -685,6 +785,10 @@ NTSTATUS rpccli_netr_NETRLOGONDUMMYROUTINE1(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONDUMMYROUTINE1, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONDUMMYROUTINE1, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONDUMMYROUTINE1);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRLOGONDUMMYROUTINE1, &r);
        
@@ -710,6 +814,10 @@ NTSTATUS rpccli_netr_NETRLOGONSETSERVICEBITS(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONSETSERVICEBITS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONSETSERVICEBITS, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONSETSERVICEBITS);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRLOGONSETSERVICEBITS, &r);
        
@@ -735,6 +843,10 @@ NTSTATUS rpccli_netr_NETRLOGONGETTRUSTRID(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONGETTRUSTRID, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONGETTRUSTRID, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONGETTRUSTRID);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRLOGONGETTRUSTRID, &r);
        
@@ -760,6 +872,10 @@ NTSTATUS rpccli_netr_NETRLOGONCOMPUTESERVERDIGEST(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONCOMPUTESERVERDIGEST, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONCOMPUTESERVERDIGEST, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONCOMPUTESERVERDIGEST);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRLOGONCOMPUTESERVERDIGEST, &r);
        
@@ -785,6 +901,10 @@ NTSTATUS rpccli_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONCOMPUTECLIENTDIGEST, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONCOMPUTECLIENTDIGEST, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONCOMPUTECLIENTDIGEST);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRLOGONCOMPUTECLIENTDIGEST, &r);
        
@@ -816,6 +936,10 @@ NTSTATUS rpccli_netr_ServerAuthenticate3(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERAUTHENTICATE3, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerAuthenticate3, (ndr_push_flags_fn_t)ndr_push_netr_ServerAuthenticate3);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_ServerAuthenticate3, &r);
        
@@ -849,6 +973,10 @@ NTSTATUS rpccli_netr_DsRGetDCNameEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETDCNAMEEX, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsRGetDCNameEx, (ndr_push_flags_fn_t)ndr_push_netr_DsRGetDCNameEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DsRGetDCNameEx, &r);
        
@@ -857,7 +985,9 @@ NTSTATUS rpccli_netr_DsRGetDCNameEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -876,6 +1006,10 @@ NTSTATUS rpccli_netr_DsRGetSiteName(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETSITENAME, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsRGetSiteName, (ndr_push_flags_fn_t)ndr_push_netr_DsRGetSiteName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DsRGetSiteName, &r);
        
@@ -908,6 +1042,10 @@ NTSTATUS rpccli_netr_LogonGetDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONGETDOMAININFO, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonGetDomainInfo, (ndr_push_flags_fn_t)ndr_push_netr_LogonGetDomainInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonGetDomainInfo, &r);
        
@@ -941,6 +1079,10 @@ NTSTATUS rpccli_netr_ServerPasswordSet2(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_SERVERPASSWORDSET2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_ServerPasswordSet2, (ndr_push_flags_fn_t)ndr_push_netr_ServerPasswordSet2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_ServerPasswordSet2, &r);
        
@@ -967,6 +1109,10 @@ NTSTATUS rpccli_netr_NETRSERVERPASSWORDGET(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRSERVERPASSWORDGET, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRSERVERPASSWORDGET, (ndr_push_flags_fn_t)ndr_push_netr_NETRSERVERPASSWORDGET);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRSERVERPASSWORDGET, &r);
        
@@ -992,6 +1138,10 @@ NTSTATUS rpccli_netr_NETRLOGONSENDTOSAM(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONSENDTOSAM, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONSENDTOSAM, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONSENDTOSAM);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRLOGONSENDTOSAM, &r);
        
@@ -1017,6 +1167,10 @@ NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESW(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRADDRESSTOSITENAMESW, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRADDRESSTOSITENAMESW, (ndr_push_flags_fn_t)ndr_push_netr_DSRADDRESSTOSITENAMESW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DSRADDRESSTOSITENAMESW, &r);
        
@@ -1049,6 +1203,10 @@ NTSTATUS rpccli_netr_DsRGetDCNameEx2(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETDCNAMEEX2, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsRGetDCNameEx2, (ndr_push_flags_fn_t)ndr_push_netr_DsRGetDCNameEx2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DsRGetDCNameEx2, &r);
        
@@ -1057,7 +1215,9 @@ NTSTATUS rpccli_netr_DsRGetDCNameEx2(struct rpc_pipe_client *cli, TALLOC_CTX *me
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -1075,6 +1235,10 @@ NTSTATUS rpccli_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct rpc_pipe_client
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRLOGONGETTIMESERVICEPARENTDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN, (ndr_push_flags_fn_t)ndr_push_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN, &r);
        
@@ -1100,6 +1264,10 @@ NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINSEX(struct rpc_pipe_client *cli,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRENUMERATETRUSTEDDOMAINSEX, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRENUMERATETRUSTEDDOMAINSEX, (ndr_push_flags_fn_t)ndr_push_netr_NETRENUMERATETRUSTEDDOMAINSEX);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRENUMERATETRUSTEDDOMAINSEX, &r);
        
@@ -1125,6 +1293,10 @@ NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESEXW(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRADDRESSTOSITENAMESEXW, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRADDRESSTOSITENAMESEXW, (ndr_push_flags_fn_t)ndr_push_netr_DSRADDRESSTOSITENAMESEXW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DSRADDRESSTOSITENAMESEXW, &r);
        
@@ -1150,6 +1322,10 @@ NTSTATUS rpccli_netr_DSRGETDCSITECOVERAGEW(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETDCSITECOVERAGEW, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRGETDCSITECOVERAGEW, (ndr_push_flags_fn_t)ndr_push_netr_DSRGETDCSITECOVERAGEW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DSRGETDCSITECOVERAGEW, &r);
        
@@ -1181,6 +1357,10 @@ NTSTATUS rpccli_netr_LogonSamLogonEx(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONSAMLOGONEX, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonSamLogonEx, (ndr_push_flags_fn_t)ndr_push_netr_LogonSamLogonEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonSamLogonEx, &r);
        
@@ -1211,6 +1391,10 @@ NTSTATUS rpccli_netr_DsrEnumerateDomainTrusts(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRENUMERATEDOMAINTRUSTS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DsrEnumerateDomainTrusts, (ndr_push_flags_fn_t)ndr_push_netr_DsrEnumerateDomainTrusts);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DsrEnumerateDomainTrusts, &r);
        
@@ -1238,6 +1422,10 @@ NTSTATUS rpccli_netr_DSRDEREGISTERDNSHOSTRECORDS(struct rpc_pipe_client *cli, TA
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRDEREGISTERDNSHOSTRECORDS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRDEREGISTERDNSHOSTRECORDS, (ndr_push_flags_fn_t)ndr_push_netr_DSRDEREGISTERDNSHOSTRECORDS);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DSRDEREGISTERDNSHOSTRECORDS, &r);
        
@@ -1263,6 +1451,10 @@ NTSTATUS rpccli_netr_NETRSERVERTRUSTPASSWORDSGET(struct rpc_pipe_client *cli, TA
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRSERVERTRUSTPASSWORDSGET, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRSERVERTRUSTPASSWORDSGET, (ndr_push_flags_fn_t)ndr_push_netr_NETRSERVERTRUSTPASSWORDSGET);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRSERVERTRUSTPASSWORDSGET, &r);
        
@@ -1288,6 +1480,10 @@ NTSTATUS rpccli_netr_DSRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_DSRGETFORESTTRUSTINFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_DSRGETFORESTTRUSTINFORMATION, (ndr_push_flags_fn_t)ndr_push_netr_DSRGETFORESTTRUSTINFORMATION);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_DSRGETFORESTTRUSTINFORMATION, &r);
        
@@ -1313,6 +1509,10 @@ NTSTATUS rpccli_netr_NETRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRGETFORESTTRUSTINFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRGETFORESTTRUSTINFORMATION, (ndr_push_flags_fn_t)ndr_push_netr_NETRGETFORESTTRUSTINFORMATION);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRGETFORESTTRUSTINFORMATION, &r);
        
@@ -1346,6 +1546,10 @@ NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_LOGONSAMLOGONWITHFLAGS, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_LogonSamLogonWithFlags, (ndr_push_flags_fn_t)ndr_push_netr_LogonSamLogonWithFlags);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_LogonSamLogonWithFlags, &r);
        
@@ -1354,7 +1558,9 @@ NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_
        }
        
        /* Return variables */
-       *return_authenticator = *r.out.return_authenticator;
+       if ( return_authenticator ) {
+               *return_authenticator = *r.out.return_authenticator;
+       }
        *validation = *r.out.validation;
        *authoritative = *r.out.authoritative;
        *flags = *r.out.flags;
@@ -1375,6 +1581,10 @@ NTSTATUS rpccli_netr_NETRSERVERGETTRUSTINFO(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_NETLOGON, DCERPC_NETR_NETRSERVERGETTRUSTINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_netr_NETRSERVERGETTRUSTINFO, (ndr_push_flags_fn_t)ndr_push_netr_NETRSERVERGETTRUSTINFO);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(netr_NETRSERVERGETTRUSTINFO, &r);
        
index 740c8371c75eb21d407351e3570fb08f1d436740..8470c7b3ac5cc1e429f5716b53ae43f3d2fe0c87 100644 (file)
@@ -23,6 +23,10 @@ NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevEnum, &r);
        
@@ -34,7 +38,9 @@ NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *m
        *level = *r.out.level;
        *ctr = *r.out.ctr;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -55,6 +61,10 @@ NTSTATUS rpccli_srvsvc_NetCharDevGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevGetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevGetInfo, &r);
        
@@ -84,6 +94,10 @@ NTSTATUS rpccli_srvsvc_NetCharDevControl(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVCONTROL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevControl, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevControl);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevControl, &r);
        
@@ -115,6 +129,10 @@ NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQEnum, &r);
        
@@ -126,7 +144,9 @@ NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *
        *level = *r.out.level;
        *ctr = *r.out.ctr;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -148,6 +168,10 @@ NTSTATUS rpccli_srvsvc_NetCharDevQGetInfo(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQGetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQGetInfo, &r);
        
@@ -179,6 +203,10 @@ NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQSETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQSetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQSetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQSetInfo, &r);
        
@@ -187,7 +215,9 @@ NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CT
        }
        
        /* Return variables */
-       *parm_error = *r.out.parm_error;
+       if ( parm_error ) {
+               *parm_error = *r.out.parm_error;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -207,6 +237,10 @@ NTSTATUS rpccli_srvsvc_NetCharDevQPurge(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQPURGE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQPurge, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQPurge);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurge, &r);
        
@@ -235,6 +269,10 @@ NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCHARDEVQPURGESELF, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetCharDevQPurgeSelf, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetCharDevQPurgeSelf);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetCharDevQPurgeSelf, &r);
        
@@ -266,6 +304,10 @@ NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETCONNENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetConnEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetConnEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetConnEnum, &r);
        
@@ -277,7 +319,9 @@ NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        *level = *r.out.level;
        *ctr = *r.out.ctr;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -302,6 +346,10 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETFILEENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetFileEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetFileEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetFileEnum, &r);
        
@@ -313,7 +361,9 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        *level = *r.out.level;
        *ctr = *r.out.ctr;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -334,6 +384,10 @@ NTSTATUS rpccli_srvsvc_NetFileGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETFILEGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetFileGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetFileGetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetFileGetInfo, &r);
        
@@ -362,6 +416,10 @@ NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETFILECLOSE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetFileClose, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetFileClose);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetFileClose, &r);
        
@@ -394,6 +452,10 @@ NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSESSENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSessEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSessEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetSessEnum, &r);
        
@@ -405,7 +467,9 @@ NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        *level = *r.out.level;
        *ctr = *r.out.ctr;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -426,6 +490,10 @@ NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSESSDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSessDel, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSessDel);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetSessDel, &r);
        
@@ -455,6 +523,10 @@ NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREADD, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareAdd, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareAdd);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareAdd, &r);
        
@@ -463,7 +535,9 @@ NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        }
        
        /* Return variables */
-       *parm_error = *r.out.parm_error;
+       if ( parm_error ) {
+               *parm_error = *r.out.parm_error;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -486,6 +560,10 @@ NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREENUMALL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareEnumAll, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareEnumAll);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnumAll, &r);
        
@@ -497,7 +575,9 @@ NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *
        *level = *r.out.level;
        *ctr = *r.out.ctr;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -518,6 +598,10 @@ NTSTATUS rpccli_srvsvc_NetShareGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareGetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareGetInfo, &r);
        
@@ -549,6 +633,10 @@ NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHARESETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareSetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareSetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareSetInfo, &r);
        
@@ -557,7 +645,9 @@ NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
        }
        
        /* Return variables */
-       *parm_error = *r.out.parm_error;
+       if ( parm_error ) {
+               *parm_error = *r.out.parm_error;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -578,6 +668,10 @@ NTSTATUS rpccli_srvsvc_NetShareDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareDel, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareDel);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDel, &r);
        
@@ -606,6 +700,10 @@ NTSTATUS rpccli_srvsvc_NetShareDelSticky(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREDELSTICKY, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareDelSticky, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareDelSticky);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelSticky, &r);
        
@@ -633,6 +731,10 @@ NTSTATUS rpccli_srvsvc_NetShareCheck(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHARECHECK, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareCheck, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareCheck);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareCheck, &r);
        
@@ -661,6 +763,10 @@ NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSRVGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSrvGetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSrvGetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvGetInfo, &r);
        
@@ -691,6 +797,10 @@ NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSRVSETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSrvSetInfo, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSrvSetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetSrvSetInfo, &r);
        
@@ -699,7 +809,9 @@ NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *me
        }
        
        /* Return variables */
-       *parm_error = *r.out.parm_error;
+       if ( parm_error ) {
+               *parm_error = *r.out.parm_error;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -722,6 +834,10 @@ NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETDISKENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetDiskEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetDiskEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetDiskEnum, &r);
        
@@ -732,7 +848,9 @@ NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        /* Return variables */
        *info = *r.out.info;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -754,6 +872,10 @@ NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSERVERSTATISTICSGET, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetServerStatisticsGet, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetServerStatisticsGet);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetServerStatisticsGet, &r);
        
@@ -783,6 +905,10 @@ NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETTRANSPORTADD, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetTransportAdd, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetTransportAdd);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportAdd, &r);
        
@@ -813,6 +939,10 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETTRANSPORTENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetTransportEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetTransportEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportEnum, &r);
        
@@ -824,7 +954,9 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX
        *level = *r.out.level;
        *transports = *r.out.transports;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -845,6 +977,10 @@ NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETTRANSPORTDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetTransportDel, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetTransportDel);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetTransportDel, &r);
        
@@ -871,6 +1007,10 @@ NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETREMOTETOD, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetRemoteTOD, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetRemoteTOD);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetRemoteTOD, &r);
        
@@ -879,7 +1019,9 @@ NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        }
        
        /* Return variables */
-       *info = *r.out.info;
+       if ( info ) {
+               *info = *r.out.info;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -901,6 +1043,10 @@ NTSTATUS rpccli_srvsvc_NetSetServiceBits(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSETSERVICEBITS, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSetServiceBits, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSetServiceBits);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetSetServiceBits, &r);
        
@@ -929,6 +1075,10 @@ NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETPATHTYPE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetPathType, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetPathType);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetPathType, &r);
        
@@ -961,6 +1111,10 @@ NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETPATHCANONICALIZE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetPathCanonicalize, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetPathCanonicalize);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCanonicalize, &r);
        
@@ -993,6 +1147,10 @@ NTSTATUS rpccli_srvsvc_NetPathCompare(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETPATHCOMPARE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetPathCompare, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetPathCompare);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetPathCompare, &r);
        
@@ -1022,6 +1180,10 @@ NTSTATUS rpccli_srvsvc_NetNameValidate(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETNAMEVALIDATE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetNameValidate, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetNameValidate);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetNameValidate, &r);
        
@@ -1047,6 +1209,10 @@ NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRPRNAMECANONICALIZE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRPRNAMECANONICALIZE, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRPRNAMECANONICALIZE);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRPRNAMECANONICALIZE, &r);
        
@@ -1077,6 +1243,10 @@ NTSTATUS rpccli_srvsvc_NetPRNameCompare(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETPRNAMECOMPARE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetPRNameCompare, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetPRNameCompare);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetPRNameCompare, &r);
        
@@ -1107,6 +1277,10 @@ NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareEnum, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareEnum, &r);
        
@@ -1118,7 +1292,9 @@ NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        *level = *r.out.level;
        *ctr = *r.out.ctr;
        *totalentries = *r.out.totalentries;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -1139,6 +1315,10 @@ NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREDELSTART, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareDelStart, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareDelStart);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelStart, &r);
        
@@ -1147,7 +1327,9 @@ NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, TALLOC_CTX
        }
        
        /* Return variables */
-       *hnd = *r.out.hnd;
+       if ( hnd ) {
+               *hnd = *r.out.hnd;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -1166,6 +1348,10 @@ NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSHAREDELCOMMIT, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetShareDelCommit, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetShareDelCommit);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetShareDelCommit, &r);
        
@@ -1174,7 +1360,9 @@ NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, TALLOC_CTX
        }
        
        /* Return variables */
-       *hnd = *r.out.hnd;
+       if ( hnd ) {
+               *hnd = *r.out.hnd;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -1196,6 +1384,10 @@ NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETGETFILESECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetGetFileSecurity, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetGetFileSecurity);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetGetFileSecurity, &r);
        
@@ -1204,7 +1396,9 @@ NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CT
        }
        
        /* Return variables */
-       *sd_buf = *r.out.sd_buf;
+       if ( sd_buf ) {
+               *sd_buf = *r.out.sd_buf;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -1227,6 +1421,10 @@ NTSTATUS rpccli_srvsvc_NetSetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSETFILESECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetSetFileSecurity, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetSetFileSecurity);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetSetFileSecurity, &r);
        
@@ -1255,6 +1453,10 @@ NTSTATUS rpccli_srvsvc_NetServerTransportAddEx(struct rpc_pipe_client *cli, TALL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSERVERTRANSPORTADDEX, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetServerTransportAddEx, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetServerTransportAddEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetServerTransportAddEx, &r);
        
@@ -1286,6 +1488,10 @@ NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx(struct rpc_pipe_client *cli, TA
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETSERVERSETSERVICEBITSEX, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NetServerSetServiceBitsEx, (ndr_push_flags_fn_t)ndr_push_srvsvc_NetServerSetServiceBitsEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NetServerSetServiceBitsEx, &r);
        
@@ -1311,6 +1517,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSGETVERSION(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSGETVERSION, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSGETVERSION, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSGETVERSION);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSGETVERSION, &r);
        
@@ -1336,6 +1546,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSCREATELOCALPARTITION(struct rpc_pipe_client *cli,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSCREATELOCALPARTITION, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSCREATELOCALPARTITION, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSCREATELOCALPARTITION);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATELOCALPARTITION, &r);
        
@@ -1361,6 +1575,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSDELETELOCALPARTITION(struct rpc_pipe_client *cli,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSDELETELOCALPARTITION, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSDELETELOCALPARTITION, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSDELETELOCALPARTITION);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETELOCALPARTITION, &r);
        
@@ -1386,6 +1604,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSSETLOCALVOLUMESTATE, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSSETLOCALVOLUMESTATE, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSSETLOCALVOLUMESTATE);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETLOCALVOLUMESTATE, &r);
        
@@ -1411,6 +1633,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSSETSERVERINFO(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSSETSERVERINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSSETSERVERINFO, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSSETSERVERINFO);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSSETSERVERINFO, &r);
        
@@ -1436,6 +1662,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSCREATEEXITPOINT(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSCREATEEXITPOINT, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSCREATEEXITPOINT, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSCREATEEXITPOINT);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSCREATEEXITPOINT, &r);
        
@@ -1461,6 +1691,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSDELETEEXITPOINT(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSDELETEEXITPOINT, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSDELETEEXITPOINT, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSDELETEEXITPOINT);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSDELETEEXITPOINT, &r);
        
@@ -1486,6 +1720,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSMODIFYPREFIX(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSMODIFYPREFIX, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSMODIFYPREFIX, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSMODIFYPREFIX);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMODIFYPREFIX, &r);
        
@@ -1511,6 +1749,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSFIXLOCALVOLUME(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSFIXLOCALVOLUME, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSFIXLOCALVOLUME, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSFIXLOCALVOLUME);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSFIXLOCALVOLUME, &r);
        
@@ -1536,6 +1778,10 @@ NTSTATUS rpccli_srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct rpc_pipe_client *cli,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRDFSMANAGERREPORTSITEINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRDFSMANAGERREPORTSITEINFO, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRDFSMANAGERREPORTSITEINFO);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRDFSMANAGERREPORTSITEINFO, &r);
        
@@ -1561,6 +1807,10 @@ NTSTATUS rpccli_srvsvc_NETRSERVERTRANSPORTDELEX(struct rpc_pipe_client *cli, TAL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SRVSVC, DCERPC_SRVSVC_NETRSERVERTRANSPORTDELEX, &r, (ndr_pull_flags_fn_t)ndr_pull_srvsvc_NETRSERVERTRANSPORTDELEX, (ndr_push_flags_fn_t)ndr_push_srvsvc_NETRSERVERTRANSPORTDELEX);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(srvsvc_NETRSERVERTRANSPORTDELEX, &r);
        
index dce4c332ee64fba984323470542f2888fdfdfd59..a3b4df4992a6a891866ce04d6b84c6288a10cb87 100644 (file)
@@ -19,6 +19,10 @@ NTSTATUS rpccli_svcctl_CloseServiceHandle(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CLOSESERVICEHANDLE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_CloseServiceHandle, (ndr_push_flags_fn_t)ndr_push_svcctl_CloseServiceHandle);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_CloseServiceHandle, &r);
        
@@ -47,6 +51,10 @@ NTSTATUS rpccli_svcctl_ControlService(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CONTROLSERVICE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ControlService, (ndr_push_flags_fn_t)ndr_push_svcctl_ControlService);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_ControlService, &r);
        
@@ -74,6 +82,10 @@ NTSTATUS rpccli_svcctl_DeleteService(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_DELETESERVICE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_DeleteService, (ndr_push_flags_fn_t)ndr_push_svcctl_DeleteService);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_DeleteService, &r);
        
@@ -100,6 +112,10 @@ NTSTATUS rpccli_svcctl_LockServiceDatabase(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_LOCKSERVICEDATABASE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_LockServiceDatabase, (ndr_push_flags_fn_t)ndr_push_svcctl_LockServiceDatabase);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_LockServiceDatabase, &r);
        
@@ -126,6 +142,10 @@ NTSTATUS rpccli_svcctl_QueryServiceObjectSecurity(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICEOBJECTSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceObjectSecurity, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceObjectSecurity);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceObjectSecurity, &r);
        
@@ -151,6 +171,10 @@ NTSTATUS rpccli_svcctl_SetServiceObjectSecurity(struct rpc_pipe_client *cli, TAL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SETSERVICEOBJECTSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SetServiceObjectSecurity, (ndr_push_flags_fn_t)ndr_push_svcctl_SetServiceObjectSecurity);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_SetServiceObjectSecurity, &r);
        
@@ -177,6 +201,10 @@ NTSTATUS rpccli_svcctl_QueryServiceStatus(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICESTATUS, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceStatus, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceStatus);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceStatus, &r);
        
@@ -203,6 +231,10 @@ NTSTATUS rpccli_svcctl_SetServiceStatus(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SETSERVICESTATUS, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SetServiceStatus, (ndr_push_flags_fn_t)ndr_push_svcctl_SetServiceStatus);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_SetServiceStatus, &r);
        
@@ -229,6 +261,10 @@ NTSTATUS rpccli_svcctl_UnlockServiceDatabase(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_UNLOCKSERVICEDATABASE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_UnlockServiceDatabase, (ndr_push_flags_fn_t)ndr_push_svcctl_UnlockServiceDatabase);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_UnlockServiceDatabase, &r);
        
@@ -255,6 +291,10 @@ NTSTATUS rpccli_svcctl_NotifyBootConfigStatus(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_NOTIFYBOOTCONFIGSTATUS, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_NotifyBootConfigStatus, (ndr_push_flags_fn_t)ndr_push_svcctl_NotifyBootConfigStatus);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_NotifyBootConfigStatus, &r);
        
@@ -284,6 +324,10 @@ NTSTATUS rpccli_svcctl_SCSetServiceBitsW(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SCSETSERVICEBITSW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SCSetServiceBitsW, (ndr_push_flags_fn_t)ndr_push_svcctl_SCSetServiceBitsW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_SCSetServiceBitsW, &r);
        
@@ -319,6 +363,10 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigW(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CHANGESERVICECONFIGW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ChangeServiceConfigW, (ndr_push_flags_fn_t)ndr_push_svcctl_ChangeServiceConfigW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfigW, &r);
        
@@ -360,6 +408,10 @@ NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CREATESERVICEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_CreateServiceW, (ndr_push_flags_fn_t)ndr_push_svcctl_CreateServiceW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_CreateServiceW, &r);
        
@@ -368,7 +420,9 @@ NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        }
        
        /* Return variables */
-       *TagId = *r.out.TagId;
+       if ( TagId ) {
+               *TagId = *r.out.TagId;
+       }
        *handle = *r.out.handle;
        
        /* Return result */
@@ -390,6 +444,10 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMDEPENDENTSERVICESW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumDependentServicesW, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumDependentServicesW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_EnumDependentServicesW, &r);
        
@@ -398,7 +456,9 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLO
        }
        
        /* Return variables */
-       *status = *r.out.status;
+       if ( status ) {
+               *status = *r.out.status;
+       }
        *bytes_needed = *r.out.bytes_needed;
        *services_returned = *r.out.services_returned;
        
@@ -423,6 +483,10 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMSERVICESSTATUSW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumServicesStatusW, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumServicesStatusW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_EnumServicesStatusW, &r);
        
@@ -434,7 +498,9 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_C
        *service = *r.out.service;
        *bytes_needed = *r.out.bytes_needed;
        *services_returned = *r.out.services_returned;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -455,6 +521,10 @@ NTSTATUS rpccli_svcctl_OpenSCManagerW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_OPENSCMANAGERW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_OpenSCManagerW, (ndr_push_flags_fn_t)ndr_push_svcctl_OpenSCManagerW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_OpenSCManagerW, &r);
        
@@ -484,6 +554,10 @@ NTSTATUS rpccli_svcctl_OpenServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_OPENSERVICEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_OpenServiceW, (ndr_push_flags_fn_t)ndr_push_svcctl_OpenServiceW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_OpenServiceW, &r);
        
@@ -512,6 +586,10 @@ NTSTATUS rpccli_svcctl_QueryServiceConfigW(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICECONFIGW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceConfigW, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceConfigW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfigW, &r);
        
@@ -541,6 +619,10 @@ NTSTATUS rpccli_svcctl_QueryServiceLockStatusW(struct rpc_pipe_client *cli, TALL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICELOCKSTATUSW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceLockStatusW, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceLockStatusW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceLockStatusW, &r);
        
@@ -571,6 +653,10 @@ NTSTATUS rpccli_svcctl_StartServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_STARTSERVICEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_StartServiceW, (ndr_push_flags_fn_t)ndr_push_svcctl_StartServiceW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_StartServiceW, &r);
        
@@ -599,6 +685,10 @@ NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETSERVICEDISPLAYNAMEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetServiceDisplayNameW, (ndr_push_flags_fn_t)ndr_push_svcctl_GetServiceDisplayNameW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_GetServiceDisplayNameW, &r);
        
@@ -608,7 +698,9 @@ NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLO
        
        /* Return variables */
        *display_name = *r.out.display_name;
-       *display_name_length = *r.out.display_name_length;
+       if ( display_name_length ) {
+               *display_name_length = *r.out.display_name_length;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -629,6 +721,10 @@ NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETSERVICEKEYNAMEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetServiceKeyNameW, (ndr_push_flags_fn_t)ndr_push_svcctl_GetServiceKeyNameW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_GetServiceKeyNameW, &r);
        
@@ -638,7 +734,9 @@ NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CT
        
        /* Return variables */
        *key_name = *r.out.key_name;
-       *display_name_length = *r.out.display_name_length;
+       if ( display_name_length ) {
+               *display_name_length = *r.out.display_name_length;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -660,6 +758,10 @@ NTSTATUS rpccli_svcctl_SCSetServiceBitsA(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SCSETSERVICEBITSA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SCSetServiceBitsA, (ndr_push_flags_fn_t)ndr_push_svcctl_SCSetServiceBitsA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_SCSetServiceBitsA, &r);
        
@@ -695,6 +797,10 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigA(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CHANGESERVICECONFIGA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ChangeServiceConfigA, (ndr_push_flags_fn_t)ndr_push_svcctl_ChangeServiceConfigA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfigA, &r);
        
@@ -733,6 +839,10 @@ NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CREATESERVICEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_CreateServiceA, (ndr_push_flags_fn_t)ndr_push_svcctl_CreateServiceA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_CreateServiceA, &r);
        
@@ -741,7 +851,9 @@ NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *m
        }
        
        /* Return variables */
-       *TagId = *r.out.TagId;
+       if ( TagId ) {
+               *TagId = *r.out.TagId;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -762,6 +874,10 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMDEPENDENTSERVICESA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumDependentServicesA, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumDependentServicesA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_EnumDependentServicesA, &r);
        
@@ -770,7 +886,9 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLO
        }
        
        /* Return variables */
-       *status = *r.out.status;
+       if ( status ) {
+               *status = *r.out.status;
+       }
        *bytes_needed = *r.out.bytes_needed;
        *services_returned = *r.out.services_returned;
        
@@ -795,6 +913,10 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMSERVICESSTATUSA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumServicesStatusA, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumServicesStatusA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_EnumServicesStatusA, &r);
        
@@ -806,7 +928,9 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_C
        *service = *r.out.service;
        *bytes_needed = *r.out.bytes_needed;
        *services_returned = *r.out.services_returned;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -827,6 +951,10 @@ NTSTATUS rpccli_svcctl_OpenSCManagerA(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_OPENSCMANAGERA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_OpenSCManagerA, (ndr_push_flags_fn_t)ndr_push_svcctl_OpenSCManagerA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_OpenSCManagerA, &r);
        
@@ -856,6 +984,10 @@ NTSTATUS rpccli_svcctl_OpenServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_OPENSERVICEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_OpenServiceA, (ndr_push_flags_fn_t)ndr_push_svcctl_OpenServiceA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_OpenServiceA, &r);
        
@@ -883,6 +1015,10 @@ NTSTATUS rpccli_svcctl_QueryServiceConfigA(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICECONFIGA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceConfigA, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceConfigA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfigA, &r);
        
@@ -912,6 +1048,10 @@ NTSTATUS rpccli_svcctl_QueryServiceLockStatusA(struct rpc_pipe_client *cli, TALL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICELOCKSTATUSA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceLockStatusA, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceLockStatusA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceLockStatusA, &r);
        
@@ -942,6 +1082,10 @@ NTSTATUS rpccli_svcctl_StartServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *me
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_STARTSERVICEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_StartServiceA, (ndr_push_flags_fn_t)ndr_push_svcctl_StartServiceA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_StartServiceA, &r);
        
@@ -970,6 +1114,10 @@ NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETSERVICEDISPLAYNAMEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetServiceDisplayNameA, (ndr_push_flags_fn_t)ndr_push_svcctl_GetServiceDisplayNameA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_GetServiceDisplayNameA, &r);
        
@@ -979,7 +1127,9 @@ NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLO
        
        /* Return variables */
        *display_name = *r.out.display_name;
-       *display_name_length = *r.out.display_name_length;
+       if ( display_name_length ) {
+               *display_name_length = *r.out.display_name_length;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -1000,6 +1150,10 @@ NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETSERVICEKEYNAMEA, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetServiceKeyNameA, (ndr_push_flags_fn_t)ndr_push_svcctl_GetServiceKeyNameA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_GetServiceKeyNameA, &r);
        
@@ -1009,7 +1163,9 @@ NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CT
        
        /* Return variables */
        *key_name = *r.out.key_name;
-       *display_name_length = *r.out.display_name_length;
+       if ( display_name_length ) {
+               *display_name_length = *r.out.display_name_length;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -1027,6 +1183,10 @@ NTSTATUS rpccli_svcctl_GetCurrentGroupeStateW(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_GETCURRENTGROUPESTATEW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_GetCurrentGroupeStateW, (ndr_push_flags_fn_t)ndr_push_svcctl_GetCurrentGroupeStateW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_GetCurrentGroupeStateW, &r);
        
@@ -1052,6 +1212,10 @@ NTSTATUS rpccli_svcctl_EnumServiceGroupW(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_ENUMSERVICEGROUPW, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_EnumServiceGroupW, (ndr_push_flags_fn_t)ndr_push_svcctl_EnumServiceGroupW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_EnumServiceGroupW, &r);
        
@@ -1080,6 +1244,10 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfig2A(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CHANGESERVICECONFIG2A, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ChangeServiceConfig2A, (ndr_push_flags_fn_t)ndr_push_svcctl_ChangeServiceConfig2A);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfig2A, &r);
        
@@ -1108,6 +1276,10 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfig2W(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_CHANGESERVICECONFIG2W, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_ChangeServiceConfig2W, (ndr_push_flags_fn_t)ndr_push_svcctl_ChangeServiceConfig2W);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_ChangeServiceConfig2W, &r);
        
@@ -1136,6 +1308,10 @@ NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICECONFIG2A, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceConfig2A, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceConfig2A);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfig2A, &r);
        
@@ -1166,6 +1342,10 @@ NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICECONFIG2W, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceConfig2W, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceConfig2W);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceConfig2W, &r);
        
@@ -1196,6 +1376,10 @@ NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_QUERYSERVICESTATUSEX, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_QueryServiceStatusEx, (ndr_push_flags_fn_t)ndr_push_svcctl_QueryServiceStatusEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_QueryServiceStatusEx, &r);
        
@@ -1229,6 +1413,10 @@ NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_ENUMSERVICESSTATUSEXA, &r, (ndr_pull_flags_fn_t)ndr_pull_EnumServicesStatusExA, (ndr_push_flags_fn_t)ndr_push_EnumServicesStatusExA);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(EnumServicesStatusExA, &r);
        
@@ -1240,7 +1428,9 @@ NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *m
        *services = *r.out.services;
        *bytes_needed = *r.out.bytes_needed;
        *service_returned = *r.out.service_returned;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        *group_name = *r.out.group_name;
        
        /* Return result */
@@ -1265,6 +1455,10 @@ NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_ENUMSERVICESSTATUSEXW, &r, (ndr_pull_flags_fn_t)ndr_pull_EnumServicesStatusExW, (ndr_push_flags_fn_t)ndr_push_EnumServicesStatusExW);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(EnumServicesStatusExW, &r);
        
@@ -1276,7 +1470,9 @@ NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        *services = *r.out.services;
        *bytes_needed = *r.out.bytes_needed;
        *service_returned = *r.out.service_returned;
-       *resume_handle = *r.out.resume_handle;
+       if ( resume_handle ) {
+               *resume_handle = *r.out.resume_handle;
+       }
        *group_name = *r.out.group_name;
        
        /* Return result */
@@ -1295,6 +1491,10 @@ NTSTATUS rpccli_svcctl_SCSendTSMessage(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_SVCCTL, DCERPC_SVCCTL_SCSENDTSMESSAGE, &r, (ndr_pull_flags_fn_t)ndr_pull_svcctl_SCSendTSMessage, (ndr_push_flags_fn_t)ndr_push_svcctl_SCSendTSMessage);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(svcctl_SCSendTSMessage, &r);
        
index 8448b76a8dfc48e9a1a598bfd11850956b37a62a..49ac8c8e72263812a7136fa2d176e4ab3c75f0b4 100644 (file)
@@ -19,6 +19,10 @@ NTSTATUS rpccli_unixinfo_SidToUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_SIDTOUID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_SidToUid, (ndr_push_flags_fn_t)ndr_push_unixinfo_SidToUid);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(unixinfo_SidToUid, &r);
        
@@ -46,6 +50,10 @@ NTSTATUS rpccli_unixinfo_UidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_UIDTOSID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_UidToSid, (ndr_push_flags_fn_t)ndr_push_unixinfo_UidToSid);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(unixinfo_UidToSid, &r);
        
@@ -54,7 +62,9 @@ NTSTATUS rpccli_unixinfo_UidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        }
        
        /* Return variables */
-       *sid = *r.out.sid;
+       if ( sid ) {
+               *sid = *r.out.sid;
+       }
        
        /* Return result */
        return r.out.result;
@@ -73,6 +83,10 @@ NTSTATUS rpccli_unixinfo_SidToGid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_SIDTOGID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_SidToGid, (ndr_push_flags_fn_t)ndr_push_unixinfo_SidToGid);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(unixinfo_SidToGid, &r);
        
@@ -100,6 +114,10 @@ NTSTATUS rpccli_unixinfo_GidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_GIDTOSID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_GidToSid, (ndr_push_flags_fn_t)ndr_push_unixinfo_GidToSid);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(unixinfo_GidToSid, &r);
        
@@ -108,7 +126,9 @@ NTSTATUS rpccli_unixinfo_GidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        }
        
        /* Return variables */
-       *sid = *r.out.sid;
+       if ( sid ) {
+               *sid = *r.out.sid;
+       }
        
        /* Return result */
        return r.out.result;
@@ -128,6 +148,10 @@ NTSTATUS rpccli_unixinfo_GetPWUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_UNIXINFO, DCERPC_UNIXINFO_GETPWUID, &r, (ndr_pull_flags_fn_t)ndr_pull_unixinfo_GetPWUid, (ndr_push_flags_fn_t)ndr_push_unixinfo_GetPWUid);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(unixinfo_GetPWUid, &r);
        
index 373fe0782d6e973584404e7df32d2b3a27040d61..e8f24f19414301338632650770247324cc2dada9 100644 (file)
@@ -20,6 +20,10 @@ NTSTATUS rpccli_winreg_OpenHKCR(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKCR, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKCR, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKCR);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKCR, &r);
        
@@ -48,6 +52,10 @@ NTSTATUS rpccli_winreg_OpenHKCU(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKCU, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKCU, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKCU);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKCU, &r);
        
@@ -76,6 +84,10 @@ NTSTATUS rpccli_winreg_OpenHKLM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKLM, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKLM, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKLM);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKLM, &r);
        
@@ -104,6 +116,10 @@ NTSTATUS rpccli_winreg_OpenHKPD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKPD, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKPD, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKPD);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKPD, &r);
        
@@ -132,6 +148,10 @@ NTSTATUS rpccli_winreg_OpenHKU(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKU, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKU, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKU);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKU, &r);
        
@@ -159,6 +179,10 @@ NTSTATUS rpccli_winreg_CloseKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_CLOSEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_CloseKey, (ndr_push_flags_fn_t)ndr_push_winreg_CloseKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_CloseKey, &r);
        
@@ -192,6 +216,10 @@ NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_CREATEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_CreateKey, (ndr_push_flags_fn_t)ndr_push_winreg_CreateKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_CreateKey, &r);
        
@@ -201,7 +229,9 @@ NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        /* Return variables */
        *new_handle = *r.out.new_handle;
-       *action_taken = *r.out.action_taken;
+       if ( action_taken ) {
+               *action_taken = *r.out.action_taken;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -221,6 +251,10 @@ NTSTATUS rpccli_winreg_DeleteKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_DELETEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_DeleteKey, (ndr_push_flags_fn_t)ndr_push_winreg_DeleteKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_DeleteKey, &r);
        
@@ -248,6 +282,10 @@ NTSTATUS rpccli_winreg_DeleteValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_DELETEVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_DeleteValue, (ndr_push_flags_fn_t)ndr_push_winreg_DeleteValue);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_DeleteValue, &r);
        
@@ -278,6 +316,10 @@ NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_ENUMKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_EnumKey, (ndr_push_flags_fn_t)ndr_push_winreg_EnumKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_EnumKey, &r);
        
@@ -287,8 +329,12 @@ NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        /* Return variables */
        *name = *r.out.name;
-       *keyclass = *r.out.keyclass;
-       *last_changed_time = *r.out.last_changed_time;
+       if ( keyclass ) {
+               *keyclass = *r.out.keyclass;
+       }
+       if ( last_changed_time ) {
+               *last_changed_time = *r.out.last_changed_time;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -313,6 +359,10 @@ NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_ENUMVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_EnumValue, (ndr_push_flags_fn_t)ndr_push_winreg_EnumValue);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_EnumValue, &r);
        
@@ -322,10 +372,18 @@ NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        /* Return variables */
        *name = *r.out.name;
-       *type = *r.out.type;
-       *data = *r.out.data;
-       *data_size = *r.out.data_size;
-       *value_length = *r.out.value_length;
+       if ( type ) {
+               *type = *r.out.type;
+       }
+       if ( data ) {
+               *data = *r.out.data;
+       }
+       if ( data_size ) {
+               *data_size = *r.out.data_size;
+       }
+       if ( value_length ) {
+               *value_length = *r.out.value_length;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -344,6 +402,10 @@ NTSTATUS rpccli_winreg_FlushKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_FLUSHKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_FlushKey, (ndr_push_flags_fn_t)ndr_push_winreg_FlushKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_FlushKey, &r);
        
@@ -372,6 +434,10 @@ NTSTATUS rpccli_winreg_GetKeySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_GETKEYSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_GetKeySecurity, (ndr_push_flags_fn_t)ndr_push_winreg_GetKeySecurity);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_GetKeySecurity, &r);
        
@@ -401,6 +467,10 @@ NTSTATUS rpccli_winreg_LoadKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_LOADKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_LoadKey, (ndr_push_flags_fn_t)ndr_push_winreg_LoadKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_LoadKey, &r);
        
@@ -433,6 +503,10 @@ NTSTATUS rpccli_winreg_NotifyChangeKeyValue(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_NOTIFYCHANGEKEYVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_NotifyChangeKeyValue, (ndr_push_flags_fn_t)ndr_push_winreg_NotifyChangeKeyValue);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_NotifyChangeKeyValue, &r);
        
@@ -462,6 +536,10 @@ NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenKey, (ndr_push_flags_fn_t)ndr_push_winreg_OpenKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenKey, &r);
        
@@ -476,7 +554,7 @@ NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *classname, uint32_t *num_subkeys, uint32_t *max_subkeylen, uint32_t *max_subkeysize, uint32_t *num_values, uint32_t *max_valnamelen, uint32_t *max_valbufsize, uint32_t *secdescsize, NTTIME *last_changed_time)
+NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *classname, uint32_t *num_subkeys, uint32_t *max_subkeylen, uint32_t *max_classlen, uint32_t *num_values, uint32_t *max_valnamelen, uint32_t *max_valbufsize, uint32_t *secdescsize, NTTIME *last_changed_time)
 {
        struct winreg_QueryInfoKey r;
        NTSTATUS status;
@@ -490,6 +568,10 @@ NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_QUERYINFOKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_QueryInfoKey, (ndr_push_flags_fn_t)ndr_push_winreg_QueryInfoKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_QueryInfoKey, &r);
        
@@ -501,7 +583,7 @@ NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        *classname = *r.out.classname;
        *num_subkeys = *r.out.num_subkeys;
        *max_subkeylen = *r.out.max_subkeylen;
-       *max_subkeysize = *r.out.max_subkeysize;
+       *max_classlen = *r.out.max_classlen;
        *num_values = *r.out.num_values;
        *max_valnamelen = *r.out.max_valnamelen;
        *max_valbufsize = *r.out.max_valbufsize;
@@ -530,6 +612,10 @@ NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_QUERYVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_QueryValue, (ndr_push_flags_fn_t)ndr_push_winreg_QueryValue);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_QueryValue, &r);
        
@@ -538,10 +624,18 @@ NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        }
        
        /* Return variables */
-       *type = *r.out.type;
-       *data = *r.out.data;
-       *data_size = *r.out.data_size;
-       *value_length = *r.out.value_length;
+       if ( type ) {
+               *type = *r.out.type;
+       }
+       if ( data ) {
+               *data = *r.out.data;
+       }
+       if ( data_size ) {
+               *data_size = *r.out.data_size;
+       }
+       if ( value_length ) {
+               *value_length = *r.out.value_length;
+       }
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
@@ -559,6 +653,10 @@ NTSTATUS rpccli_winreg_ReplaceKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_REPLACEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_ReplaceKey, (ndr_push_flags_fn_t)ndr_push_winreg_ReplaceKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_ReplaceKey, &r);
        
@@ -587,6 +685,10 @@ NTSTATUS rpccli_winreg_RestoreKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_RESTOREKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_RestoreKey, (ndr_push_flags_fn_t)ndr_push_winreg_RestoreKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_RestoreKey, &r);
        
@@ -615,6 +717,10 @@ NTSTATUS rpccli_winreg_SaveKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_SAVEKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_SaveKey, (ndr_push_flags_fn_t)ndr_push_winreg_SaveKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_SaveKey, &r);
        
@@ -643,6 +749,10 @@ NTSTATUS rpccli_winreg_SetKeySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_SETKEYSECURITY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_SetKeySecurity, (ndr_push_flags_fn_t)ndr_push_winreg_SetKeySecurity);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_SetKeySecurity, &r);
        
@@ -674,6 +784,10 @@ NTSTATUS rpccli_winreg_SetValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_SETVALUE, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_SetValue, (ndr_push_flags_fn_t)ndr_push_winreg_SetValue);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_SetValue, &r);
        
@@ -699,6 +813,10 @@ NTSTATUS rpccli_winreg_UnLoadKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_UNLOADKEY, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_UnLoadKey, (ndr_push_flags_fn_t)ndr_push_winreg_UnLoadKey);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_UnLoadKey, &r);
        
@@ -729,6 +847,10 @@ NTSTATUS rpccli_winreg_InitiateSystemShutdown(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_INITIATESYSTEMSHUTDOWN, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_InitiateSystemShutdown, (ndr_push_flags_fn_t)ndr_push_winreg_InitiateSystemShutdown);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdown, &r);
        
@@ -755,6 +877,10 @@ NTSTATUS rpccli_winreg_AbortSystemShutdown(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_ABORTSYSTEMSHUTDOWN, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_AbortSystemShutdown, (ndr_push_flags_fn_t)ndr_push_winreg_AbortSystemShutdown);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_AbortSystemShutdown, &r);
        
@@ -781,6 +907,10 @@ NTSTATUS rpccli_winreg_GetVersion(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_GETVERSION, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_GetVersion, (ndr_push_flags_fn_t)ndr_push_winreg_GetVersion);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_GetVersion, &r);
        
@@ -809,6 +939,10 @@ NTSTATUS rpccli_winreg_OpenHKCC(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKCC, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKCC, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKCC);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKCC, &r);
        
@@ -837,6 +971,10 @@ NTSTATUS rpccli_winreg_OpenHKDD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKDD, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKDD, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKDD);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKDD, &r);
        
@@ -868,6 +1006,10 @@ NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_QUERYMULTIPLEVALUES, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_QueryMultipleValues, (ndr_push_flags_fn_t)ndr_push_winreg_QueryMultipleValues);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues, &r);
        
@@ -877,7 +1019,9 @@ NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_C
        
        /* Return variables */
        *values = *r.out.values;
-       *buffer = *r.out.buffer;
+       if ( buffer ) {
+               *buffer = *r.out.buffer;
+       }
        *buffer_size = *r.out.buffer_size;
        
        /* Return result */
@@ -902,6 +1046,10 @@ NTSTATUS rpccli_winreg_InitiateSystemShutdownEx(struct rpc_pipe_client *cli, TAL
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_INITIATESYSTEMSHUTDOWNEX, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_InitiateSystemShutdownEx, (ndr_push_flags_fn_t)ndr_push_winreg_InitiateSystemShutdownEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_InitiateSystemShutdownEx, &r);
        
@@ -927,6 +1075,10 @@ NTSTATUS rpccli_winreg_SaveKeyEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_SAVEKEYEX, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_SaveKeyEx, (ndr_push_flags_fn_t)ndr_push_winreg_SaveKeyEx);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_SaveKeyEx, &r);
        
@@ -954,6 +1106,10 @@ NTSTATUS rpccli_winreg_OpenHKPT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKPT, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKPT, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKPT);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKPT, &r);
        
@@ -982,6 +1138,10 @@ NTSTATUS rpccli_winreg_OpenHKPN(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_OPENHKPN, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_OpenHKPN, (ndr_push_flags_fn_t)ndr_push_winreg_OpenHKPN);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_OpenHKPN, &r);
        
@@ -1008,6 +1168,10 @@ NTSTATUS rpccli_winreg_QueryMultipleValues2(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WINREG, DCERPC_WINREG_QUERYMULTIPLEVALUES2, &r, (ndr_pull_flags_fn_t)ndr_pull_winreg_QueryMultipleValues2, (ndr_push_flags_fn_t)ndr_push_winreg_QueryMultipleValues2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_QueryMultipleValues2, &r);
        
index 9b799bdbf9df74f49063e58d25608d15bdf0b636..d6df871c9a55781e50bb0ffeb99bb03785beb93c 100644 (file)
@@ -17,7 +17,7 @@ NTSTATUS rpccli_winreg_GetKeySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *m
 NTSTATUS rpccli_winreg_LoadKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *keyname, struct winreg_String *filename);
 NTSTATUS rpccli_winreg_NotifyChangeKeyValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t watch_subtree, uint32_t notify_filter, uint32_t unknown, struct winreg_String string1, struct winreg_String string2, uint32_t unknown2);
 NTSTATUS rpccli_winreg_OpenKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *parent_handle, struct winreg_String keyname, uint32_t unknown, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *classname, uint32_t *num_subkeys, uint32_t *max_subkeylen, uint32_t *max_subkeysize, uint32_t *num_values, uint32_t *max_valnamelen, uint32_t *max_valbufsize, uint32_t *secdescsize, NTTIME *last_changed_time);
+NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *classname, uint32_t *num_subkeys, uint32_t *max_subkeylen, uint32_t *max_classlen, uint32_t *num_values, uint32_t *max_valnamelen, uint32_t *max_valbufsize, uint32_t *secdescsize, NTTIME *last_changed_time);
 NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String value_name, enum winreg_Type *type, uint8_t *data, uint32_t *data_size, uint32_t *value_length);
 NTSTATUS rpccli_winreg_ReplaceKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_winreg_RestoreKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *filename, uint32_t flags);
index 998b85b87ec911cb5fb97aa8326cdb5b20df342d..918851a15e27fa11936490d59ee2c9e29361af37 100644 (file)
@@ -20,6 +20,10 @@ NTSTATUS rpccli_wkssvc_NetWkstaGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETWKSTAGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetWkstaGetInfo, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetWkstaGetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetWkstaGetInfo, &r);
        
@@ -50,6 +54,10 @@ NTSTATUS rpccli_wkssvc_NetWkstaSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETWKSTASETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetWkstaSetInfo, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetWkstaSetInfo);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetWkstaSetInfo, &r);
        
@@ -81,6 +89,10 @@ NTSTATUS rpccli_wkssvc_NetWkstaEnumUsers(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETWKSTAENUMUSERS, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetWkstaEnumUsers, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetWkstaEnumUsers);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetWkstaEnumUsers, &r);
        
@@ -90,8 +102,12 @@ NTSTATUS rpccli_wkssvc_NetWkstaEnumUsers(struct rpc_pipe_client *cli, TALLOC_CTX
        
        /* Return variables */
        *users = *r.out.users;
-       *entriesread = *r.out.entriesread;
-       *totalentries = *r.out.totalentries;
+       if ( entriesread ) {
+               *entriesread = *r.out.entriesread;
+       }
+       if ( totalentries ) {
+               *totalentries = *r.out.totalentries;
+       }
        *resumehandle = *r.out.resumehandle;
        
        /* Return result */
@@ -110,6 +126,10 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTAUSERGETINFO(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWKSTAUSERGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWKSTAUSERGETINFO, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWKSTAUSERGETINFO);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRWKSTAUSERGETINFO, &r);
        
@@ -135,6 +155,10 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTAUSERSETINFO(struct rpc_pipe_client *cli, TALLOC_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWKSTAUSERSETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWKSTAUSERSETINFO, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWKSTAUSERSETINFO);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRWKSTAUSERSETINFO, &r);
        
@@ -165,6 +189,10 @@ NTSTATUS rpccli_wkssvc_NetWkstaTransportEnum(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETWKSTATRANSPORTENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetWkstaTransportEnum, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetWkstaTransportEnum);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetWkstaTransportEnum, &r);
        
@@ -175,7 +203,9 @@ NTSTATUS rpccli_wkssvc_NetWkstaTransportEnum(struct rpc_pipe_client *cli, TALLOC
        /* Return variables */
        *level = *r.out.level;
        *ctr = *r.out.ctr;
-       *totalentries = *r.out.totalentries;
+       if ( totalentries ) {
+               *totalentries = *r.out.totalentries;
+       }
        *resume_handle = *r.out.resume_handle;
        
        /* Return result */
@@ -194,6 +224,10 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTATRANSPORTADD(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWKSTATRANSPORTADD, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWKSTATRANSPORTADD, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWKSTATRANSPORTADD);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRWKSTATRANSPORTADD, &r);
        
@@ -219,6 +253,10 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTATRANSPORTDEL(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWKSTATRANSPORTDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWKSTATRANSPORTDEL, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWKSTATRANSPORTDEL);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRWKSTATRANSPORTDEL, &r);
        
@@ -244,6 +282,10 @@ NTSTATUS rpccli_WKSSVC_NETRUSEADD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUSEADD, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUSEADD, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUSEADD);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRUSEADD, &r);
        
@@ -269,6 +311,10 @@ NTSTATUS rpccli_WKSSVC_NETRUSEGETINFO(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUSEGETINFO, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUSEGETINFO, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUSEGETINFO);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRUSEGETINFO, &r);
        
@@ -294,6 +340,10 @@ NTSTATUS rpccli_WKSSVC_NETRUSEDEL(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUSEDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUSEDEL, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUSEDEL);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRUSEDEL, &r);
        
@@ -319,6 +369,10 @@ NTSTATUS rpccli_WKSSVC_NETRUSEENUM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUSEENUM, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUSEENUM, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUSEENUM);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRUSEENUM, &r);
        
@@ -344,6 +398,10 @@ NTSTATUS rpccli_WKSSVC_NETRMESSAGEBUFFERSEND(struct rpc_pipe_client *cli, TALLOC
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRMESSAGEBUFFERSEND, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRMESSAGEBUFFERSEND, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRMESSAGEBUFFERSEND);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRMESSAGEBUFFERSEND, &r);
        
@@ -369,6 +427,10 @@ NTSTATUS rpccli_WKSSVC_NETRWORKSTATIONSTATISTICSGET(struct rpc_pipe_client *cli,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRWORKSTATIONSTATISTICSGET, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRWORKSTATIONSTATISTICSGET, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRWORKSTATIONSTATISTICSGET);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRWORKSTATIONSTATISTICSGET, &r);
        
@@ -394,6 +456,10 @@ NTSTATUS rpccli_WKSSVC_NETRLOGONDOMAINNAMEADD(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRLOGONDOMAINNAMEADD, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRLOGONDOMAINNAMEADD, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRLOGONDOMAINNAMEADD);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRLOGONDOMAINNAMEADD, &r);
        
@@ -419,6 +485,10 @@ NTSTATUS rpccli_WKSSVC_NETRLOGONDOMAINNAMEDEL(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRLOGONDOMAINNAMEDEL, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRLOGONDOMAINNAMEDEL, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRLOGONDOMAINNAMEDEL);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRLOGONDOMAINNAMEDEL, &r);
        
@@ -444,6 +514,10 @@ NTSTATUS rpccli_WKSSVC_NETRJOINDOMAIN(struct rpc_pipe_client *cli, TALLOC_CTX *m
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRJOINDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRJOINDOMAIN, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRJOINDOMAIN);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRJOINDOMAIN, &r);
        
@@ -469,6 +543,10 @@ NTSTATUS rpccli_WKSSVC_NETRUNJOINDOMAIN(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUNJOINDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRUNJOINDOMAIN, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRUNJOINDOMAIN);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRUNJOINDOMAIN, &r);
        
@@ -494,6 +572,10 @@ NTSTATUS rpccli_WKSSVC_NETRRENAMEMACHINEINDOMAIN(struct rpc_pipe_client *cli, TA
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRRENAMEMACHINEINDOMAIN, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRRENAMEMACHINEINDOMAIN, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRRENAMEMACHINEINDOMAIN);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRRENAMEMACHINEINDOMAIN, &r);
        
@@ -519,6 +601,10 @@ NTSTATUS rpccli_WKSSVC_NETRVALIDATENAME(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRVALIDATENAME, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRVALIDATENAME, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRVALIDATENAME);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRVALIDATENAME, &r);
        
@@ -544,6 +630,10 @@ NTSTATUS rpccli_WKSSVC_NETRGETJOININFORMATION(struct rpc_pipe_client *cli, TALLO
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRGETJOININFORMATION, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRGETJOININFORMATION, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRGETJOININFORMATION);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRGETJOININFORMATION, &r);
        
@@ -569,6 +659,10 @@ NTSTATUS rpccli_WKSSVC_NETRGETJOINABLEOUS(struct rpc_pipe_client *cli, TALLOC_CT
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRGETJOINABLEOUS, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRGETJOINABLEOUS, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRGETJOINABLEOUS);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRGETJOINABLEOUS, &r);
        
@@ -600,6 +694,10 @@ NTSTATUS rpccli_wkssvc_NetrJoinDomain2(struct rpc_pipe_client *cli, TALLOC_CTX *
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRJOINDOMAIN2, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrJoinDomain2, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrJoinDomain2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetrJoinDomain2, &r);
        
@@ -629,6 +727,10 @@ NTSTATUS rpccli_wkssvc_NetrUnjoinDomain2(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRUNJOINDOMAIN2, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrUnjoinDomain2, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrUnjoinDomain2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetrUnjoinDomain2, &r);
        
@@ -659,6 +761,10 @@ NTSTATUS rpccli_wkssvc_NetrRenameMachineInDomain2(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRRENAMEMACHINEINDOMAIN2, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrRenameMachineInDomain2, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrRenameMachineInDomain2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetrRenameMachineInDomain2, &r);
        
@@ -684,6 +790,10 @@ NTSTATUS rpccli_WKSSVC_NETRVALIDATENAME2(struct rpc_pipe_client *cli, TALLOC_CTX
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRVALIDATENAME2, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRVALIDATENAME2, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRVALIDATENAME2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRVALIDATENAME2, &r);
        
@@ -709,6 +819,10 @@ NTSTATUS rpccli_WKSSVC_NETRGETJOINABLEOUS2(struct rpc_pipe_client *cli, TALLOC_C
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRGETJOINABLEOUS2, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRGETJOINABLEOUS2, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRGETJOINABLEOUS2);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRGETJOINABLEOUS2, &r);
        
@@ -739,6 +853,10 @@ NTSTATUS rpccli_wkssvc_NetrAddAlternateComputerName(struct rpc_pipe_client *cli,
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRADDALTERNATECOMPUTERNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrAddAlternateComputerName, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrAddAlternateComputerName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetrAddAlternateComputerName, &r);
        
@@ -769,6 +887,10 @@ NTSTATUS rpccli_wkssvc_NetrRemoveAlternateComputerName(struct rpc_pipe_client *c
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_wkssvc_NetrRemoveAlternateComputerName, (ndr_push_flags_fn_t)ndr_push_wkssvc_NetrRemoveAlternateComputerName);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(wkssvc_NetrRemoveAlternateComputerName, &r);
        
@@ -794,6 +916,10 @@ NTSTATUS rpccli_WKSSVC_NETRSETPRIMARYCOMPUTERNAME(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRSETPRIMARYCOMPUTERNAME, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRSETPRIMARYCOMPUTERNAME, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRSETPRIMARYCOMPUTERNAME);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRSETPRIMARYCOMPUTERNAME, &r);
        
@@ -819,6 +945,10 @@ NTSTATUS rpccli_WKSSVC_NETRENUMERATECOMPUTERNAMES(struct rpc_pipe_client *cli, T
        
        status = cli_do_rpc_ndr(cli, mem_ctx, PI_WKSSVC, DCERPC_WKSSVC_NETRENUMERATECOMPUTERNAMES, &r, (ndr_pull_flags_fn_t)ndr_pull_WKSSVC_NETRENUMERATECOMPUTERNAMES, (ndr_push_flags_fn_t)ndr_push_WKSSVC_NETRENUMERATECOMPUTERNAMES);
        
+       if ( !NT_STATUS_IS_OK(status) ) {
+               return status;
+       }
+       
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(WKSSVC_NETRENUMERATECOMPUTERNAMES, &r);
        
index 27123d3ac2cd7a88a394c404aebf43c6b4f491df..67fd9f52c59ea839ca19b43c05d6748ca452a6ce 100644 (file)
@@ -268,7 +268,7 @@ NTSTATUS ndr_push_winreg_StringBuf(struct ndr_push *ndr, int ndr_flags, const st
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 4));
-               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m_term(r->name)*2));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, strlen_m(r->name)*2));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->size));
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->name));
        }
@@ -276,8 +276,8 @@ NTSTATUS ndr_push_winreg_StringBuf(struct ndr_push *ndr, int ndr_flags, const st
                if (r->name) {
                        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size/2));
                        NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m_term(r->name)*2/2));
-                       NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m_term(r->name)*2/2, sizeof(uint16_t), CH_UTF16));
+                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen_m(r->name)*2/2));
+                       NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->name, strlen_m(r->name)*2/2, sizeof(uint16_t), CH_UTF16));
                }
        }
        return NT_STATUS_OK;
@@ -324,7 +324,7 @@ _PUBLIC_ void ndr_print_winreg_StringBuf(struct ndr_print *ndr, const char *name
 {
        ndr_print_struct(ndr, name, "winreg_StringBuf");
        ndr->depth++;
-       ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m_term(r->name)*2:r->length);
+       ndr_print_uint16(ndr, "length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen_m(r->name)*2:r->length);
        ndr_print_uint16(ndr, "size", r->size);
        ndr_print_ptr(ndr, "name", r->name);
        ndr->depth++;
@@ -2111,8 +2111,8 @@ NTSTATUS ndr_push_winreg_QueryInfoKey(struct ndr_push *ndr, int flags, const str
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_subkeys));
                if (r->out.max_subkeylen == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_subkeylen));
-               if (r->out.max_subkeysize == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_subkeysize));
+               if (r->out.max_classlen == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.max_classlen));
                if (r->out.num_values == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.num_values));
                if (r->out.max_valnamelen == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
@@ -2134,7 +2134,7 @@ NTSTATUS ndr_pull_winreg_QueryInfoKey(struct ndr_pull *ndr, int flags, struct wi
        TALLOC_CTX *_mem_save_classname_0;
        TALLOC_CTX *_mem_save_num_subkeys_0;
        TALLOC_CTX *_mem_save_max_subkeylen_0;
-       TALLOC_CTX *_mem_save_max_subkeysize_0;
+       TALLOC_CTX *_mem_save_max_classlen_0;
        TALLOC_CTX *_mem_save_num_values_0;
        TALLOC_CTX *_mem_save_max_valnamelen_0;
        TALLOC_CTX *_mem_save_max_valbufsize_0;
@@ -2163,8 +2163,8 @@ NTSTATUS ndr_pull_winreg_QueryInfoKey(struct ndr_pull *ndr, int flags, struct wi
                ZERO_STRUCTP(r->out.num_subkeys);
                NDR_PULL_ALLOC(ndr, r->out.max_subkeylen);
                ZERO_STRUCTP(r->out.max_subkeylen);
-               NDR_PULL_ALLOC(ndr, r->out.max_subkeysize);
-               ZERO_STRUCTP(r->out.max_subkeysize);
+               NDR_PULL_ALLOC(ndr, r->out.max_classlen);
+               ZERO_STRUCTP(r->out.max_classlen);
                NDR_PULL_ALLOC(ndr, r->out.num_values);
                ZERO_STRUCTP(r->out.num_values);
                NDR_PULL_ALLOC(ndr, r->out.max_valnamelen);
@@ -2199,12 +2199,12 @@ NTSTATUS ndr_pull_winreg_QueryInfoKey(struct ndr_pull *ndr, int flags, struct wi
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_subkeylen));
                NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_subkeylen_0, LIBNDR_FLAG_REF_ALLOC);
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-                       NDR_PULL_ALLOC(ndr, r->out.max_subkeysize);
+                       NDR_PULL_ALLOC(ndr, r->out.max_classlen);
                }
-               _mem_save_max_subkeysize_0 = NDR_PULL_GET_MEM_CTX(ndr);
-               NDR_PULL_SET_MEM_CTX(ndr, r->out.max_subkeysize, LIBNDR_FLAG_REF_ALLOC);
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_subkeysize));
-               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_subkeysize_0, LIBNDR_FLAG_REF_ALLOC);
+               _mem_save_max_classlen_0 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->out.max_classlen, LIBNDR_FLAG_REF_ALLOC);
+               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.max_classlen));
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_max_classlen_0, LIBNDR_FLAG_REF_ALLOC);
                if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
                        NDR_PULL_ALLOC(ndr, r->out.num_values);
                }
@@ -2280,9 +2280,9 @@ _PUBLIC_ void ndr_print_winreg_QueryInfoKey(struct ndr_print *ndr, const char *n
                ndr->depth++;
                ndr_print_uint32(ndr, "max_subkeylen", *r->out.max_subkeylen);
                ndr->depth--;
-               ndr_print_ptr(ndr, "max_subkeysize", r->out.max_subkeysize);
+               ndr_print_ptr(ndr, "max_classlen", r->out.max_classlen);
                ndr->depth++;
-               ndr_print_uint32(ndr, "max_subkeysize", *r->out.max_subkeysize);
+               ndr_print_uint32(ndr, "max_classlen", *r->out.max_classlen);
                ndr->depth--;
                ndr_print_ptr(ndr, "num_values", r->out.num_values);
                ndr->depth++;
index 9df4952a5e9345250b21a07e00ced91bc4f4a71f..2aaf0a13cbfb5c6763df049c3a1c8c8da72500fa 100644 (file)
@@ -1008,8 +1008,8 @@ static BOOL api_winreg_QueryInfoKey(pipes_struct *p)
                return False;
        }
        
-       r.out.max_subkeysize = talloc_zero_size(mem_ctx, sizeof(*r.out.max_subkeysize));
-       if (r.out.max_subkeysize == NULL) {
+       r.out.max_classlen = talloc_zero_size(mem_ctx, sizeof(*r.out.max_classlen));
+       if (r.out.max_classlen == NULL) {
                talloc_free(mem_ctx);
                return False;
        }
@@ -1044,7 +1044,7 @@ static BOOL api_winreg_QueryInfoKey(pipes_struct *p)
                return False;
        }
        
-       r.out.result = _winreg_QueryInfoKey(p, r.in.handle, r.in.classname, r.out.num_subkeys, r.out.max_subkeylen, r.out.max_subkeysize, r.out.num_values, r.out.max_valnamelen, r.out.max_valbufsize, r.out.secdescsize, r.out.last_changed_time);
+       r.out.result = _winreg_QueryInfoKey(p, r.in.handle, r.in.classname, r.out.num_subkeys, r.out.max_subkeylen, r.out.max_classlen, r.out.num_values, r.out.max_valnamelen, r.out.max_valbufsize, r.out.secdescsize, r.out.last_changed_time);
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_OUT_DEBUG(winreg_QueryInfoKey, &r);
index b0bffa695494d79eb38bc72c76098dcd40cb0c51..8c5505a8781160619fe1dc20a07ceec4ca4abcbd 100644 (file)
@@ -17,7 +17,7 @@ WERROR _winreg_GetKeySecurity(pipes_struct *p, struct policy_handle *handle, uin
 WERROR _winreg_LoadKey(pipes_struct *p, struct policy_handle *handle, struct winreg_String *keyname, struct winreg_String *filename);
 WERROR _winreg_NotifyChangeKeyValue(pipes_struct *p, struct policy_handle *handle, uint8_t watch_subtree, uint32_t notify_filter, uint32_t unknown, struct winreg_String string1, struct winreg_String string2, uint32_t unknown2);
 WERROR _winreg_OpenKey(pipes_struct *p, struct policy_handle *parent_handle, struct winreg_String keyname, uint32_t unknown, uint32_t access_mask, struct policy_handle *handle);
-WERROR _winreg_QueryInfoKey(pipes_struct *p, struct policy_handle *handle, struct winreg_String *classname, uint32_t *num_subkeys, uint32_t *max_subkeylen, uint32_t *max_subkeysize, uint32_t *num_values, uint32_t *max_valnamelen, uint32_t *max_valbufsize, uint32_t *secdescsize, NTTIME *last_changed_time);
+WERROR _winreg_QueryInfoKey(pipes_struct *p, struct policy_handle *handle, struct winreg_String *classname, uint32_t *num_subkeys, uint32_t *max_subkeylen, uint32_t *max_classlen, uint32_t *num_values, uint32_t *max_valnamelen, uint32_t *max_valbufsize, uint32_t *secdescsize, NTTIME *last_changed_time);
 WERROR _winreg_QueryValue(pipes_struct *p, struct policy_handle *handle, struct winreg_String value_name, enum winreg_Type *type, uint8_t *data, uint32_t *data_size, uint32_t *value_length);
 WERROR _winreg_ReplaceKey(pipes_struct *p);
 WERROR _winreg_RestoreKey(pipes_struct *p, struct policy_handle *handle, struct winreg_String *filename, uint32_t flags);
index cb117cb037ec2c4ba9b6395981f3928a7ff76e9d..24ed2e55f82ced83e9643cac6314054fbec929c9 100644 (file)
@@ -48,7 +48,7 @@ enum winreg_CreateAction {
 };
 
 struct winreg_StringBuf {
-       uint16_t length;/* [value(strlen_m_term(name)*2)] */
+       uint16_t length;/* [value(strlen_m(name)*2)] */
        uint16_t size;
        const char *name;/* [unique,length_is(length/2),charset(UTF16),size_is(size/2)] */
 };
@@ -323,7 +323,7 @@ struct winreg_QueryInfoKey {
                struct winreg_String *classname;/* [ref] */
                uint32_t *num_subkeys;/* [ref] */
                uint32_t *max_subkeylen;/* [ref] */
-               uint32_t *max_subkeysize;/* [ref] */
+               uint32_t *max_classlen;/* [ref] */
                uint32_t *num_values;/* [ref] */
                uint32_t *max_valnamelen;/* [ref] */
                uint32_t *max_valbufsize;/* [ref] */
index b3658280be2299e3194553f7156163fba134601b..5178e3c7a743d685571306acf78a0637a8c895e6 100644 (file)
        );
 
        typedef struct {
-               [value(strlen_m_term(name)*2)] uint16 length; 
+               [value(strlen_m(name)*2)] uint16 length; 
                /* size cannot be auto-set by value() as it is the
                   amount of space the server is allowed to use for this
                   string in the reply, not its current size */
                [size_is(size/2),length_is(length/2),charset(UTF16)] uint16 *name;
        } winreg_StringBuf;
 
+
+       /******************/
+       /* Function: 0x09 */
        WERROR winreg_EnumKey(
                [in,ref]        policy_handle    *handle,
                [in]            uint32           enum_index,
                [in,out,ref] winreg_String *classname,
                [out,ref] uint32 *num_subkeys,
                [out,ref] uint32 *max_subkeylen,
-               [out,ref] uint32 *max_subkeysize,
+               [out,ref] uint32 *max_classlen,
                [out,ref] uint32 *num_values,
                [out,ref] uint32 *max_valnamelen,
                [out,ref] uint32 *max_valbufsize,
index 42f0606ca6f712abfe97f64104145728c29c4ca3..3aadc0497522a99ec5c2d3fc8db1d39d3b5a4333 100644 (file)
@@ -26,7 +26,7 @@
  connect to a registry hive root (open a registry policy)
 *******************************************************************/
 
-NTSTATUS rpccli_winreg_connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
+NTSTATUS rpccli_winreg_Connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                          uint32 reg_type, uint32 access_mask,
                          POLICY_HND *reg_hnd)
 {
@@ -58,61 +58,6 @@ NTSTATUS rpccli_winreg_connect(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        return NT_STATUS_INVALID_PARAMETER;
 }
 
-/****************************************************************************
-****************************************************************************/
-
-NTSTATUS rpccli_winreg_query_key(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-                           POLICY_HND *hnd,
-                           char *key_class, uint32 *class_len,
-                           uint32 *num_subkeys, uint32 *max_subkeylen,
-                           uint32 *max_subkeysize, uint32 *num_values,
-                           uint32 *max_valnamelen, uint32 *max_valbufsize,
-                           uint32 *secdescsize, NTTIME *mod_time)
-{
-       NTSTATUS status;
-       struct winreg_String classname;
-
-       classname.name = key_class;
-       status = rpccli_winreg_QueryInfoKey( cli, mem_ctx, hnd, 
-                       &classname, num_subkeys,
-                       max_subkeylen, max_subkeysize, num_values,
-                       max_valnamelen, max_valbufsize, secdescsize,
-                       mod_time );
-
-       /* The old code would check for INSUFFICIENT_BUFFER.  
-          Will have to work this out. */
-
-       return status;
-}
-
-
-/****************************************************************************
-****************************************************************************/
-
-NTSTATUS rpccli_winreg_enum_val(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-                          POLICY_HND *hnd, int idx,
-                          fstring val_name, uint32 *type, REGVAL_BUFFER *value)
-{
-       NTSTATUS status = NT_STATUS_INVALID_PARAMETER;
-       
-       /* do rpc */
-       
-               
-       return status;
-}
-
-/****************************************************************************
-****************************************************************************/
-
-NTSTATUS rpccli_winreg_enum_key(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
-                          POLICY_HND *hnd, int key_index, fstring key_name,
-                          fstring class_name, time_t *mod_time)
-{
-       NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
-       
-       return status;
-}
-
 /*
  *
  * Utility functions
index d037871f82e3dcad54df0c6aa8d1712cbe723869..6d4468e934c4aa9046cf5aacab00e45396080fb9 100644 (file)
@@ -67,6 +67,8 @@ enum netdom_domain_t { ND_TYPE_NT4, ND_TYPE_AD };
 /* INCLUDE FILES */
 
 #include "utils/net_proto.h"
+#include "libmsrpc.h"
+
  
 /* MACROS & DEFINES */
 
index 57d1f14d06e5e0758e2cdf5ba0f2af1a943fe048..aacf97445cb99dd650113726efd2a3029c770586 100644 (file)
@@ -88,6 +88,14 @@ static NTSTATUS rpc_registry_enumerate_internal(const DOM_SID *domain_sid,
        uint32 idx;
        NTSTATUS status;
        struct winreg_String subkeyname;
+       struct winreg_String classname;
+       uint32 num_subkeys, max_subkeylen, max_classlen;
+       uint32 num_values, max_valnamelen, max_valbufsize;
+       uint32 secdescsize;
+       NTTIME last_changed_time;
+       struct winreg_StringBuf subkey_namebuf;
+       char *name_buffer; 
+       uint8 *value_buffer;
        
        if (argc != 1 ) {
                d_printf("Usage:    net rpc enumerate <path> [recurse]\n");
@@ -102,10 +110,10 @@ static NTSTATUS rpc_registry_enumerate_internal(const DOM_SID *domain_sid,
        
        /* open the top level hive and then the registry key */
        
-       status = rpccli_winreg_connect(pipe_hnd, mem_ctx, hive, MAXIMUM_ALLOWED_ACCESS, &pol_hive );
+       status = rpccli_winreg_Connect(pipe_hnd, mem_ctx, hive, MAXIMUM_ALLOWED_ACCESS, &pol_hive );
        if ( !NT_STATUS_IS_OK(status) ) {
                d_fprintf(stderr, "Unable to connect to remote registry: "
-                         "%s\n", dos_errstr(result));
+                         "%s\n", nt_errstr(status));
                return status;
        }
        
@@ -114,29 +122,68 @@ static NTSTATUS rpc_registry_enumerate_internal(const DOM_SID *domain_sid,
                                       0, MAXIMUM_ALLOWED_ACCESS, &pol_key );
        if ( !NT_STATUS_IS_OK(status) ) {
                d_fprintf(stderr, "Unable to open [%s]: %s\n", argv[0],
-                         dos_errstr(result));
+                         nt_errstr(status));
                return werror_to_ntstatus(result);
        }
-       
+
+       classname.name = NULL;
+       status = rpccli_winreg_QueryInfoKey( pipe_hnd, mem_ctx, &pol_key, 
+                       &classname, &num_subkeys, &max_subkeylen,
+                       &max_classlen, &num_values, &max_valnamelen,
+                       &max_valbufsize, &secdescsize, &last_changed_time );
+
+       if ( !NT_STATUS_IS_OK(status) ) {
+               d_fprintf(stderr, "Unable to determine subkeys (%s)\n", 
+                       nt_errstr(status));
+               return status;
+       }
+
+       /* values do not include the terminating NULL */
+
+       max_subkeylen += 2;
+       max_valnamelen += 2;
+
+       if ( (name_buffer = TALLOC_ARRAY( mem_ctx, char, max_subkeylen )) == NULL ) {
+               d_fprintf(stderr, "Memory allocation error.\n");
+               return NT_STATUS_NO_MEMORY;
+       }
+
        /* get the subkeys */
        
        status = NT_STATUS_OK;
        idx = 0;
        while ( NT_STATUS_IS_OK(status) ) {
-               time_t modtime;
-               fstring keyname, classname;
-               
-               status = rpccli_winreg_enum_key(pipe_hnd, mem_ctx, &pol_key, idx, 
-                       keyname, classname, &modtime );
+               struct winreg_StringBuf class_namebuf;
+               fstring kname;
+               NTTIME modtime;
+
+               class_namebuf.name = NULL;
+               class_namebuf.size = 0;
+               class_namebuf.length = 0;
+
+               /* zero out each time */
+
+               subkey_namebuf.length = 0;
+               subkey_namebuf.size = max_subkeylen;
+               memset( name_buffer, 0x0, max_subkeylen );
+               subkey_namebuf.name = name_buffer;
+
+               status = rpccli_winreg_EnumKey(pipe_hnd, mem_ctx, &pol_key, idx, 
+                       &subkey_namebuf, &class_namebuf, &modtime);
                        
                if ( W_ERROR_EQUAL(ntstatus_to_werror(status), WERR_NO_MORE_ITEMS) ) {
                        status = NT_STATUS_OK;
                        break;
                }
-                       
-               d_printf("Keyname   = %s\n", keyname );
-               d_printf("Classname = %s\n", classname );
-               d_printf("Modtime   = %s\n", http_timestring(modtime) );
+
+               if ( !NT_STATUS_IS_OK(status) )
+                       goto out;
+               
+               StrnCpy( kname, subkey_namebuf.name, MIN(subkey_namebuf.length,sizeof(kname))-1 );
+               kname[MIN(subkey_namebuf.length,sizeof(kname))-1] = '\0';
+               d_printf("Keyname   = %s\n", kname);
+               d_printf("Modtime   = %s\n", 
+                       http_timestring(nt_time_to_unix(modtime)) );
                d_printf("\n" );
 
                idx++;
@@ -144,27 +191,60 @@ static NTSTATUS rpc_registry_enumerate_internal(const DOM_SID *domain_sid,
 
        if ( !NT_STATUS_IS_OK(status) )
                goto out;
-       
+
+       /* TALLOC_FREE( name_buffer ); */
+
+       if ( (name_buffer = TALLOC_ARRAY( mem_ctx, char, max_valnamelen )) == NULL ) {
+               d_fprintf(stderr, "Memory allocation error.\n");
+               return NT_STATUS_NO_MEMORY;
+       }
+
+       if ( (value_buffer = TALLOC_ARRAY( mem_ctx, uint8, max_valbufsize )) == NULL ) {
+               d_fprintf(stderr, "Memory allocation error.\n");
+               return NT_STATUS_NO_MEMORY;
+       }
+
        /* get the values */
        
        status = NT_STATUS_OK;
        idx = 0;
        while ( NT_STATUS_IS_OK(status) ) {
-               uint32 type;
+               enum winreg_Type type;
                fstring name;
+               uint8 *data;
+               uint32 data_size, value_length;
+               struct winreg_StringBuf value_namebuf;
                REGVAL_BUFFER value;
                
                fstrcpy( name, "" );
                ZERO_STRUCT( value );
-               
-               status = rpccli_winreg_enum_val(pipe_hnd, mem_ctx, &pol_key, idx, 
-                       name, &type, &value );
+
+               memset( name_buffer, 0x0, max_valnamelen );
+               value_namebuf.name = name_buffer;
+               value_namebuf.length = 0;
+               value_namebuf.size = max_valnamelen;
+
+               memset( value_buffer, 0x0, max_valbufsize );
+               data = value_buffer;
+               data_size = max_valbufsize;
+               value_length = 0;
+
+               status = rpccli_winreg_EnumValue(pipe_hnd, mem_ctx, &pol_key, idx, 
+                       &value_namebuf, &type, data, &data_size, &value_length );
                        
                if ( W_ERROR_EQUAL(ntstatus_to_werror(status), WERR_NO_MORE_ITEMS) ) {
                        status = NT_STATUS_OK;
                        break;
                }
+
+               if ( !NT_STATUS_IS_OK(status) )
+                       goto out;
+
+               init_regval_buffer( &value, data, value_length );
                        
+               StrnCpy( name, value_namebuf.name, MIN(max_valnamelen, sizeof(name)-1) );
+               name[MIN(max_valnamelen, sizeof(name)-1)] = '\0';
+
                d_printf("Valuename  = %s\n", name );
                d_printf("Type       = %s\n", reg_type_lookup(type));
                d_printf("Data       = " );
@@ -174,7 +254,6 @@ static NTSTATUS rpc_registry_enumerate_internal(const DOM_SID *domain_sid,
                idx++;
        }
        
-       
 out:
        /* cleanup */
        
@@ -225,7 +304,7 @@ static NTSTATUS rpc_registry_save_internal(const DOM_SID *domain_sid,
        
        /* open the top level hive and then the registry key */
        
-       status = rpccli_winreg_connect(pipe_hnd, mem_ctx, hive, MAXIMUM_ALLOWED_ACCESS, &pol_hive );
+       status = rpccli_winreg_Connect(pipe_hnd, mem_ctx, hive, MAXIMUM_ALLOWED_ACCESS, &pol_hive );
        if ( !NT_STATUS_IS_OK(status) ) {
                d_fprintf(stderr, "Unable to connect to remote registry\n");
                return status;