r20832: Remove extra pointers previously added to unique [out] pointers. Instead,
authorJelmer Vernooij <jelmer@samba.org>
Tue, 16 Jan 2007 15:42:03 +0000 (15:42 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:17:11 +0000 (12:17 -0500)
add [ref] pointers where necessary (top-level [ref] pointers,
by spec, don't appear on the wire).

This brings us closer to the DCE/RPC standard again.
(This used to be commit 580f2a7197b1bc9db14a643fdd112b40ef37aaef)

34 files changed:
source3/client/client.c
source3/libmsrpc/cac_winreg.c
source3/librpc/gen_ndr/cli_dfs.c
source3/librpc/gen_ndr/cli_dfs.h
source3/librpc/gen_ndr/cli_echo.c
source3/librpc/gen_ndr/cli_echo.h
source3/librpc/gen_ndr/cli_lsa.c
source3/librpc/gen_ndr/cli_lsa.h
source3/librpc/gen_ndr/cli_netlogon.c
source3/librpc/gen_ndr/cli_netlogon.h
source3/librpc/gen_ndr/cli_srvsvc.c
source3/librpc/gen_ndr/cli_srvsvc.h
source3/librpc/gen_ndr/cli_svcctl.c
source3/librpc/gen_ndr/cli_svcctl.h
source3/librpc/gen_ndr/cli_unixinfo.c
source3/librpc/gen_ndr/cli_unixinfo.h
source3/librpc/gen_ndr/cli_winreg.c
source3/librpc/gen_ndr/cli_winreg.h
source3/librpc/gen_ndr/cli_wkssvc.c
source3/librpc/gen_ndr/cli_wkssvc.h
source3/librpc/gen_ndr/ndr_winreg.c
source3/librpc/gen_ndr/srv_winreg.h
source3/librpc/gen_ndr/winreg.h
source3/librpc/idl/unixinfo.idl
source3/librpc/idl/winreg.idl
source3/libsmb/libsmbclient.c
source3/rpc_server/srv_winreg_nt.c
source3/rpcclient/cmd_dfs.c
source3/rpcclient/cmd_echo.c
source3/rpcclient/cmd_srvsvc.c
source3/rpcclient/cmd_unixinfo.c
source3/utils/net_rpc.c
source3/utils/net_rpc_registry.c
source3/utils/smbtree.c

index 3b153a7e04c9da7d53534d5f8b99cb45fb38aea6..8109dea37d8f82c9bb8dce11c62479ad9108c50c 100644 (file)
@@ -2788,7 +2788,6 @@ static BOOL browse_host_rpc(BOOL sort)
        struct rpc_pipe_client *pipe_hnd;
        TALLOC_CTX *mem_ctx;
        uint32 enum_hnd = 0;
-       uint32 *penum_hnd = &enum_hnd;
        struct srvsvc_NetShareCtr1 ctr1;
        union srvsvc_NetShareCtr ctr;
        int i;
@@ -2816,7 +2815,7 @@ static BOOL browse_host_rpc(BOOL sort)
 
        status = rpccli_srvsvc_NetShareEnum(pipe_hnd, mem_ctx, "", &level,
                                            &ctr, 0xffffffff, &numentries,
-                                           &penum_hnd);
+                                           &enum_hnd);
 
        if (!NT_STATUS_IS_OK(status)) {
                TALLOC_FREE(mem_ctx);
index 8d131effe594cc6d7a94d41a786977dcbbed49e7..0bc1f15c3394faf030074c517f5034f5bf868536 100644 (file)
@@ -338,7 +338,6 @@ int cac_RegCreateKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
        struct RegOpenKey rok;
        struct winreg_String key_string, class_string;
        enum winreg_CreateAction action = 0;
-       enum winreg_CreateAction *paction = &action;
 
        if ( !hnd )
                return CAC_FAILURE;
@@ -385,7 +384,7 @@ int cac_RegCreateKey( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
                rpccli_winreg_CreateKey( pipe_hnd, mem_ctx, op->in.parent_key,
                                         key_string, class_string, 0,
                                         op->in.access, NULL, key_out,
-                                        &paction );
+                                        &action );
 
        if ( !NT_STATUS_IS_OK( hnd->status ) ) {
                return CAC_FAILURE;
@@ -674,12 +673,9 @@ int cac_RegQueryValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
        REGVAL_BUFFER buffer;
        REG_VALUE_DATA *data_out = NULL;
        enum winreg_Type val_type;
-       enum winreg_Type *pval_type = &val_type;
        uint8 *buf;
        uint32 buf_size = 4096;
-       uint32 *pbuf_size = &buf_size;
        uint32 length = 0;
-       uint32 *plength = &length;
 
        if ( !hnd )
                return CAC_FAILURE;
@@ -708,8 +704,8 @@ int cac_RegQueryValue( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
        }
 
        hnd->status = rpccli_winreg_QueryValue( pipe_hnd, mem_ctx, op->in.key,
-                                               value_string, &pval_type, &buf,
-                                               &pbuf_size, &plength );
+                                               value_string, &val_type, buf,
+                                               &buf_size, &length );
 
        if ( !NT_STATUS_IS_OK( hnd->status ) )
                return CAC_FAILURE;
@@ -840,11 +836,8 @@ int cac_RegEnumValues( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
                
        do {
                uint32 data_size = maxvalbufsize;
-               uint32 *pdata_size = &data_size;
                uint32 data_length = 0;
-               uint32 *pdata_length = &data_length;
                struct winreg_ValNameBuf name_buf;
-               enum winreg_Type *ptype = &types_out[num_values_out];
 
                memset( name_buffer, 0x0, max_valnamelen );
                name_buf.name = name_buffer;
@@ -854,9 +847,9 @@ int cac_RegEnumValues( CacServerHandle * hnd, TALLOC_CTX * mem_ctx,
                hnd->status = rpccli_winreg_EnumValue( pipe_hnd, mem_ctx, 
                                                       op->in.key,
                                                       resume_idx, &name_buf,
-                                                      &ptype, &buffer,
-                                                      &pdata_size,
-                                                      &pdata_length );
+                                                      &types_out[num_values_out], &buffer,
+                                                      &data_size,
+                                                      &data_length );
 
                if ( !NT_STATUS_IS_OK( hnd->status ) )
                        break;
index fd722e1cce6db2be823f405d5bad0a16084a3e1f..a5f4e681e0cf77d8736abee7709d18726e249693 100644 (file)
@@ -165,7 +165,7 @@ NTSTATUS rpccli_dfs_GetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, co
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct **info, uint32_t *unknown, uint32_t **total)
+NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct *info, uint32_t *unknown, uint32_t *total)
 {
        struct dfs_Enum r;
        NTSTATUS status;
@@ -173,9 +173,9 @@ NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint3
        /* In parameters */
        r.in.level = level;
        r.in.bufsize = bufsize;
-       r.in.info = *info;
+       r.in.info = info;
        r.in.unknown = unknown;
-       r.in.total = *total;
+       r.in.total = total;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(dfs_Enum, &r);
@@ -194,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);
@@ -636,7 +640,7 @@ NTSTATUS rpccli_dfs_Remove2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *name, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct **info, uint32_t **total)
+NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *name, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct *info, uint32_t *total)
 {
        struct dfs_EnumEx r;
        NTSTATUS status;
@@ -645,8 +649,8 @@ NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, con
        r.in.name = name;
        r.in.level = level;
        r.in.bufsize = bufsize;
-       r.in.info = *info;
-       r.in.total = *total;
+       r.in.info = info;
+       r.in.total = total;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(dfs_EnumEx, &r);
@@ -665,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);
index b0ec1887953ddad183a362b749d7e80f0563fe14..9f310741d512d63843ff5065da7a75cc1d4e9675 100644 (file)
@@ -6,7 +6,7 @@ NTSTATUS rpccli_dfs_Add(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const
 NTSTATUS rpccli_dfs_Remove(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *path, const char *server, const char *share);
 NTSTATUS rpccli_dfs_SetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_dfs_GetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *path, const char *server, const char *share, uint32_t level, union dfs_Info *info);
-NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct **info, uint32_t *unknown, uint32_t **total);
+NTSTATUS rpccli_dfs_Enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct *info, uint32_t *unknown, uint32_t *total);
 NTSTATUS rpccli_dfs_Rename(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_dfs_Move(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_dfs_ManagerGetConfigInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
@@ -22,6 +22,6 @@ NTSTATUS rpccli_dfs_SetDcAddress(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
 NTSTATUS rpccli_dfs_FlushFtTable(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_dfs_Add2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_dfs_Remove2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *name, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct **info, uint32_t **total);
+NTSTATUS rpccli_dfs_EnumEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *name, uint32_t level, uint32_t bufsize, struct dfs_EnumStruct *info, uint32_t *total);
 NTSTATUS rpccli_dfs_SetInfo2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 #endif /* __CLI_NETDFS__ */
index 5b6be275b8431e1be9879517b07694805b3e07f2..c393de477cb32154a15de6afea23161df6002ccd 100644 (file)
@@ -37,7 +37,7 @@ NTSTATUS rpccli_echo_AddOne(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, ui
        return NT_STATUS_OK;
 }
 
-NTSTATUS rpccli_echo_EchoData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *in_data, uint8_t **out_data)
+NTSTATUS rpccli_echo_EchoData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *in_data, uint8_t *out_data)
 {
        struct echo_EchoData r;
        NTSTATUS status;
@@ -63,7 +63,7 @@ NTSTATUS rpccli_echo_EchoData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        }
        
        /* Return variables */
-       *out_data = r.out.out_data;
+       *out_data = *r.out.out_data;
        
        /* Return result */
        return NT_STATUS_OK;
@@ -100,7 +100,7 @@ NTSTATUS rpccli_echo_SinkData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        return NT_STATUS_OK;
 }
 
-NTSTATUS rpccli_echo_SourceData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t **data)
+NTSTATUS rpccli_echo_SourceData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *data)
 {
        struct echo_SourceData r;
        NTSTATUS status;
@@ -125,7 +125,7 @@ NTSTATUS rpccli_echo_SourceData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        }
        
        /* Return variables */
-       *data = r.out.data;
+       *data = *r.out.data;
        
        /* Return result */
        return NT_STATUS_OK;
index aaeaa0ade57c33c5cc817be922675b0c80e537ed..d7e7f31704871c418636b52dc6c6ee3459a0d05a 100644 (file)
@@ -2,9 +2,9 @@
 #ifndef __CLI_RPCECHO__
 #define __CLI_RPCECHO__
 NTSTATUS rpccli_echo_AddOne(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t in_data, uint32_t *out_data);
-NTSTATUS rpccli_echo_EchoData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *in_data, uint8_t **out_data);
+NTSTATUS rpccli_echo_EchoData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *in_data, uint8_t *out_data);
 NTSTATUS rpccli_echo_SinkData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *data);
-NTSTATUS rpccli_echo_SourceData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t **data);
+NTSTATUS rpccli_echo_SourceData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t len, uint8_t *data);
 NTSTATUS rpccli_echo_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *s1, const char **s2);
 NTSTATUS rpccli_echo_TestCall2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t level, union echo_Info *info);
 NTSTATUS rpccli_echo_TestSleep(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t seconds);
index da336d2c4319ce771fad3fd1d842d2ff6c75752c..063b78f7f632f30da43323705d16f93f8952e523 100644 (file)
@@ -101,7 +101,7 @@ NTSTATUS rpccli_lsa_EnumPrivs(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_QuerySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct sec_desc_buf **sdbuf)
+NTSTATUS rpccli_lsa_QuerySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct sec_desc_buf *sdbuf)
 {
        struct lsa_QuerySecurity r;
        NTSTATUS status;
@@ -127,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;
@@ -224,7 +226,7 @@ NTSTATUS rpccli_lsa_OpenPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_QueryInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation **info)
+NTSTATUS rpccli_lsa_QueryInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation *info)
 {
        struct lsa_QueryInfoPolicy r;
        NTSTATUS status;
@@ -250,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;
@@ -448,7 +452,7 @@ NTSTATUS rpccli_lsa_EnumTrustDom(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList **domains, struct lsa_TransSidArray *sids, uint16_t level, uint32_t *count)
+NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray *sids, uint16_t level, uint32_t *count)
 {
        struct lsa_LookupNames r;
        NTSTATUS status;
@@ -478,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;
        
@@ -486,7 +492,7 @@ NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList **domains, struct lsa_TransNameArray *names, uint16_t level, uint32_t *count)
+NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray *names, uint16_t level, uint32_t *count)
 {
        struct lsa_LookupSids r;
        NTSTATUS status;
@@ -515,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;
        
@@ -589,7 +597,7 @@ NTSTATUS rpccli_lsa_OpenAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_EnumPrivsAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet **privs)
+NTSTATUS rpccli_lsa_EnumPrivsAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet *privs)
 {
        struct lsa_EnumPrivsAccount r;
        NTSTATUS status;
@@ -614,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;
@@ -832,7 +842,7 @@ NTSTATUS rpccli_lsa_OpenTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *m
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *trustdom_handle, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo **info)
+NTSTATUS rpccli_lsa_QueryTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *trustdom_handle, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info)
 {
        struct lsa_QueryTrustedDomainInfo r;
        NTSTATUS status;
@@ -858,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;
@@ -958,17 +970,17 @@ NTSTATUS rpccli_lsa_SetSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_QuerySecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF_PTR **new_val, NTTIME **new_mtime, struct lsa_DATA_BUF_PTR **old_val, NTTIME **old_mtime)
+NTSTATUS rpccli_lsa_QuerySecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF_PTR *new_val, NTTIME *new_mtime, struct lsa_DATA_BUF_PTR *old_val, NTTIME *old_mtime)
 {
        struct lsa_QuerySecret r;
        NTSTATUS status;
        
        /* In parameters */
        r.in.sec_handle = sec_handle;
-       r.in.new_val = *new_val;
-       r.in.new_mtime = *new_mtime;
-       r.in.old_val = *old_val;
-       r.in.old_mtime = *old_mtime;
+       r.in.new_val = new_val;
+       r.in.new_mtime = new_mtime;
+       r.in.old_val = old_val;
+       r.in.old_mtime = old_mtime;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(lsa_QuerySecret, &r);
@@ -987,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;
@@ -1028,7 +1048,7 @@ NTSTATUS rpccli_lsa_LookupPrivValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_LookupPrivName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_LUID *luid, struct lsa_StringLarge **name)
+NTSTATUS rpccli_lsa_LookupPrivName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_LUID *luid, struct lsa_StringLarge *name)
 {
        struct lsa_LookupPrivName r;
        NTSTATUS status;
@@ -1054,13 +1074,15 @@ 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;
 }
 
-NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_StringLarge **disp_name, uint16_t *language_id, uint16_t unknown)
+NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_StringLarge *disp_name, uint16_t *language_id, uint16_t unknown)
 {
        struct lsa_LookupPrivDisplayName r;
        NTSTATUS status;
@@ -1088,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 */
@@ -1253,7 +1277,7 @@ NTSTATUS rpccli_lsa_RemoveAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfoBySid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo **info)
+NTSTATUS rpccli_lsa_QueryTrustedDomainInfoBySid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info)
 {
        struct lsa_QueryTrustedDomainInfoBySid r;
        NTSTATUS status;
@@ -1280,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;
@@ -1437,15 +1463,15 @@ NTSTATUS rpccli_lsa_OpenPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_GetUserName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_String **account_name, struct lsa_StringPointer **authority_name)
+NTSTATUS rpccli_lsa_GetUserName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_String *account_name, struct lsa_StringPointer *authority_name)
 {
        struct lsa_GetUserName r;
        NTSTATUS status;
        
        /* In parameters */
        r.in.system_name = system_name;
-       r.in.account_name = *account_name;
-       r.in.authority_name = *authority_name;
+       r.in.account_name = account_name;
+       r.in.authority_name = authority_name;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(lsa_GetUserName, &r);
@@ -1464,14 +1490,18 @@ 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;
 }
 
-NTSTATUS rpccli_lsa_QueryInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation **info)
+NTSTATUS rpccli_lsa_QueryInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation *info)
 {
        struct lsa_QueryInfoPolicy2 r;
        NTSTATUS status;
@@ -1497,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;
@@ -1532,7 +1564,7 @@ NTSTATUS rpccli_lsa_SetInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo **info)
+NTSTATUS rpccli_lsa_QueryTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info)
 {
        struct lsa_QueryTrustedDomainInfoByName r;
        NTSTATUS status;
@@ -1559,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;
@@ -1692,7 +1726,7 @@ NTSTATUS rpccli_lsa_CloseTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CTX
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_QueryDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy **info)
+NTSTATUS rpccli_lsa_QueryDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy *info)
 {
        struct lsa_QueryDomainInformationPolicy r;
        NTSTATUS status;
@@ -1718,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;
@@ -1818,7 +1854,7 @@ NTSTATUS rpccli_lsa_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx)
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList **domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
+NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
 {
        struct lsa_LookupSids2 r;
        NTSTATUS status;
@@ -1849,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;
        
@@ -1857,7 +1895,7 @@ NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList **domains, struct lsa_TransSidArray2 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
+NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray2 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
 {
        struct lsa_LookupNames2 r;
        NTSTATUS status;
@@ -1889,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;
        
@@ -2158,7 +2198,7 @@ NTSTATUS rpccli_lsa_CREDRPROFILELOADED(struct rpc_pipe_client *cli, TALLOC_CTX *
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList **domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
+NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
 {
        struct lsa_LookupNames3 r;
        NTSTATUS status;
@@ -2190,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;
        
@@ -2401,7 +2443,7 @@ NTSTATUS rpccli_lsa_CREDRRENAME(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct lsa_SidArray *sids, struct lsa_RefDomainList **domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
+NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
 {
        struct lsa_LookupSids3 r;
        NTSTATUS status;
@@ -2431,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;
        
@@ -2439,7 +2483,7 @@ NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        return r.out.result;
 }
 
-NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList **domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
+NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2)
 {
        struct lsa_LookupNames4 r;
        NTSTATUS status;
@@ -2470,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;
        
index a0937d17f1357ce57f9b0e0a06077410acaad80c..a44105ea9c617d833353a07c321b44f3acf6c320 100644 (file)
@@ -4,22 +4,22 @@
 NTSTATUS rpccli_lsa_Close(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
 NTSTATUS rpccli_lsa_Delete(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
 NTSTATUS rpccli_lsa_EnumPrivs(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t max_count, struct lsa_PrivArray *privs);
-NTSTATUS rpccli_lsa_QuerySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct sec_desc_buf **sdbuf);
+NTSTATUS rpccli_lsa_QuerySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct sec_desc_buf *sdbuf);
 NTSTATUS rpccli_lsa_SetSecObj(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_ChangePassword(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_OpenPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, struct lsa_ObjectAttribute *attr, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_lsa_QueryInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation **info);
+NTSTATUS rpccli_lsa_QueryInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation *info);
 NTSTATUS rpccli_lsa_SetInfoPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_ClearAuditLog(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_CreateAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *acct_handle);
 NTSTATUS rpccli_lsa_EnumAccounts(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t num_entries, struct lsa_SidArray *sids);
 NTSTATUS rpccli_lsa_CreateTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_DomainInfo *info, uint32_t access_mask, struct policy_handle *trustdom_handle);
 NTSTATUS rpccli_lsa_EnumTrustDom(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, uint32_t max_size, struct lsa_DomainList *domains);
-NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList **domains, struct lsa_TransSidArray *sids, uint16_t level, uint32_t *count);
-NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList **domains, struct lsa_TransNameArray *names, uint16_t level, uint32_t *count);
+NTSTATUS rpccli_lsa_LookupNames(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray *sids, uint16_t level, uint32_t *count);
+NTSTATUS rpccli_lsa_LookupSids(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray *names, uint16_t level, uint32_t *count);
 NTSTATUS rpccli_lsa_CreateSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *sec_handle);
 NTSTATUS rpccli_lsa_OpenAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *acct_handle);
-NTSTATUS rpccli_lsa_EnumPrivsAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet **privs);
+NTSTATUS rpccli_lsa_EnumPrivsAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet *privs);
 NTSTATUS rpccli_lsa_AddPrivilegesToAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_PrivilegeSet *privs);
 NTSTATUS rpccli_lsa_RemovePrivilegesFromAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t remove_all, struct lsa_PrivilegeSet *privs);
 NTSTATUS rpccli_lsa_GetQuotasForAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
@@ -27,39 +27,39 @@ NTSTATUS rpccli_lsa_SetQuotasForAccount(struct rpc_pipe_client *cli, TALLOC_CTX
 NTSTATUS rpccli_lsa_GetSystemAccessAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_SetSystemAccessAccount(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_OpenTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t access_mask, struct policy_handle *trustdom_handle);
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *trustdom_handle, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo **info);
+NTSTATUS rpccli_lsa_QueryTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *trustdom_handle, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info);
 NTSTATUS rpccli_lsa_SetInformationTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_OpenSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *sec_handle);
 NTSTATUS rpccli_lsa_SetSecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF *new_val, struct lsa_DATA_BUF *old_val);
-NTSTATUS rpccli_lsa_QuerySecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF_PTR **new_val, NTTIME **new_mtime, struct lsa_DATA_BUF_PTR **old_val, NTTIME **old_mtime);
+NTSTATUS rpccli_lsa_QuerySecret(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *sec_handle, struct lsa_DATA_BUF_PTR *new_val, NTTIME *new_mtime, struct lsa_DATA_BUF_PTR *old_val, NTTIME *old_mtime);
 NTSTATUS rpccli_lsa_LookupPrivValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_LUID *luid);
-NTSTATUS rpccli_lsa_LookupPrivName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_LUID *luid, struct lsa_StringLarge **name);
-NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_StringLarge **disp_name, uint16_t *language_id, uint16_t unknown);
+NTSTATUS rpccli_lsa_LookupPrivName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_LUID *luid, struct lsa_StringLarge *name);
+NTSTATUS rpccli_lsa_LookupPrivDisplayName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_StringLarge *disp_name, uint16_t *language_id, uint16_t unknown);
 NTSTATUS rpccli_lsa_DeleteObject(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_EnumAccountsWithUserRight(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String *name, struct lsa_SidArray *sids);
 NTSTATUS rpccli_lsa_EnumAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, struct lsa_RightSet *rights);
 NTSTATUS rpccli_lsa_AddAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, struct lsa_RightSet *rights);
 NTSTATUS rpccli_lsa_RemoveAccountRights(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *sid, uint32_t unknown, struct lsa_RightSet *rights);
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfoBySid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo **info);
+NTSTATUS rpccli_lsa_QueryTrustedDomainInfoBySid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info);
 NTSTATUS rpccli_lsa_SetTrustedDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_DeleteTrustedDomain(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct dom_sid2 *dom_sid);
 NTSTATUS rpccli_lsa_StorePrivateData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_RetrievePrivateData(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_OpenPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_ObjectAttribute *attr, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_lsa_GetUserName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_String **account_name, struct lsa_StringPointer **authority_name);
-NTSTATUS rpccli_lsa_QueryInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation **info);
+NTSTATUS rpccli_lsa_GetUserName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *system_name, struct lsa_String *account_name, struct lsa_StringPointer *authority_name);
+NTSTATUS rpccli_lsa_QueryInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_PolicyInformation *info);
 NTSTATUS rpccli_lsa_SetInfoPolicy2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_QueryTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo **info);
+NTSTATUS rpccli_lsa_QueryTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info);
 NTSTATUS rpccli_lsa_SetTrustedDomainInfoByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String trusted_domain, enum lsa_TrustDomInfoEnum level, union lsa_TrustedDomainInfo *info);
 NTSTATUS rpccli_lsa_EnumTrustedDomainsEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *resume_handle, struct lsa_DomainListEx *domains, uint32_t max_size);
 NTSTATUS rpccli_lsa_CreateTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_CloseTrustedDomainEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_lsa_QueryDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy **info);
+NTSTATUS rpccli_lsa_QueryDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy *info);
 NTSTATUS rpccli_lsa_SetDomainInformationPolicy(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint16_t level, union lsa_DomainInformationPolicy *info);
 NTSTATUS rpccli_lsa_OpenTrustedDomainByName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_String name, uint32_t access_mask, struct policy_handle *trustdom_handle);
 NTSTATUS rpccli_lsa_TestCall(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList **domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
-NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList **domains, struct lsa_TransSidArray2 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
+NTSTATUS rpccli_lsa_LookupSids2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
+NTSTATUS rpccli_lsa_LookupNames2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray2 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
 NTSTATUS rpccli_lsa_CreateTrustedDomainEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_CREDRWRITE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_CREDRREAD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
@@ -69,7 +69,7 @@ NTSTATUS rpccli_lsa_CREDRREADDOMAINCREDENTIALS(struct rpc_pipe_client *cli, TALL
 NTSTATUS rpccli_lsa_CREDRDELETE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_CREDRGETTARGETINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_CREDRPROFILELOADED(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList **domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
+NTSTATUS rpccli_lsa_LookupNames3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
 NTSTATUS rpccli_lsa_CREDRGETSESSIONTYPES(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_LSARREGISTERAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_LSARGENAUDITEVENT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
@@ -77,8 +77,8 @@ NTSTATUS rpccli_lsa_LSARUNREGISTERAUDITEVENT(struct rpc_pipe_client *cli, TALLOC
 NTSTATUS rpccli_lsa_LSARQUERYFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_LSARSETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_CREDRRENAME(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct lsa_SidArray *sids, struct lsa_RefDomainList **domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
-NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList **domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
+NTSTATUS rpccli_lsa_LookupSids3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct lsa_SidArray *sids, struct lsa_RefDomainList *domains, struct lsa_TransNameArray2 *names, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
+NTSTATUS rpccli_lsa_LookupNames4(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t num_names, struct lsa_String *names, struct lsa_RefDomainList *domains, struct lsa_TransSidArray3 *sids, uint16_t level, uint32_t *count, uint32_t unknown1, uint32_t unknown2);
 NTSTATUS rpccli_lsa_LSAROPENPOLICYSCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
index d1f52f67e8901aff68ef3f3b44a3c5822fcefff4..1f4e6c7867daf88504dfbe7c1dbb66fd2047b7e3 100644 (file)
@@ -6,7 +6,7 @@
 #include "includes.h"
 #include "librpc/gen_ndr/cli_netlogon.h"
 
-NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasInfo **info)
+NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasInfo *info)
 {
        struct netr_LogonUasLogon r;
        NTSTATUS status;
@@ -33,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);
@@ -72,7 +74,7 @@ NTSTATUS rpccli_netr_LogonUasLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator **return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative)
+NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative)
 {
        struct netr_LogonSamLogon r;
        NTSTATUS status;
@@ -81,7 +83,7 @@ NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        r.in.server_name = server_name;
        r.in.computer_name = computer_name;
        r.in.credential = credential;
-       r.in.return_authenticator = *return_authenticator;
+       r.in.return_authenticator = return_authenticator;
        r.in.logon_level = logon_level;
        r.in.logon = logon;
        r.in.validation_level = validation_level;
@@ -103,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;
        
@@ -111,7 +115,7 @@ NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        return r.out.result;
 }
 
-NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator **return_authenticator, uint16_t logon_level, union netr_LogonLevel logon)
+NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon)
 {
        struct netr_LogonSamLogoff r;
        NTSTATUS status;
@@ -120,7 +124,7 @@ NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        r.in.server_name = server_name;
        r.in.computer_name = computer_name;
        r.in.credential = credential;
-       r.in.return_authenticator = *return_authenticator;
+       r.in.return_authenticator = return_authenticator;
        r.in.logon_level = logon_level;
        r.in.logon = logon;
        
@@ -141,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;
@@ -251,7 +257,7 @@ NTSTATUS rpccli_netr_ServerPasswordSet(struct rpc_pipe_client *cli, TALLOC_CTX *
        return r.out.result;
 }
 
-NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint64_t *sequence_num, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY **delta_enum_array)
+NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint64_t *sequence_num, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array)
 {
        struct netr_DatabaseDeltas r;
        NTSTATUS status;
@@ -284,13 +290,15 @@ 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;
 }
 
-NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY **delta_enum_array)
+NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array)
 {
        struct netr_DatabaseSync r;
        NTSTATUS status;
@@ -323,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;
@@ -582,7 +592,7 @@ NTSTATUS rpccli_netr_ServerAuthenticate2(struct rpc_pipe_client *cli, TALLOC_CTX
        return r.out.result;
 }
 
-NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint16_t restart_state, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY **delta_enum_array)
+NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint16_t restart_state, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array)
 {
        struct netr_DatabaseSync2 r;
        NTSTATUS status;
@@ -616,13 +626,15 @@ 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;
 }
 
-NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint8_t *change_log_entry, uint32_t change_log_entry_size, struct netr_DELTA_ENUM_ARRAY **delta_enum_array)
+NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint8_t *change_log_entry, uint32_t change_log_entry_size, struct netr_DELTA_ENUM_ARRAY *delta_enum_array)
 {
        struct netr_DatabaseRedo r;
        NTSTATUS status;
@@ -653,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;
@@ -722,7 +736,7 @@ NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINS(struct rpc_pipe_client *cli, TA
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, struct GUID *site_guid, uint32_t flags, struct netr_DsRGetDCNameInfo **info)
+NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, struct GUID *site_guid, uint32_t flags, struct netr_DsRGetDCNameInfo *info)
 {
        struct netr_DsRGetDCName r;
        NTSTATUS status;
@@ -751,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);
@@ -940,7 +956,7 @@ NTSTATUS rpccli_netr_ServerAuthenticate3(struct rpc_pipe_client *cli, TALLOC_CTX
        return r.out.result;
 }
 
-NTSTATUS rpccli_netr_DsRGetDCNameEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo **info)
+NTSTATUS rpccli_netr_DsRGetDCNameEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo *info)
 {
        struct netr_DsRGetDCNameEx r;
        NTSTATUS status;
@@ -969,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);
@@ -1166,7 +1184,7 @@ NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESW(struct rpc_pipe_client *cli, TALLOC_
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_netr_DsRGetDCNameEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client_account, uint32_t mask, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo **info)
+NTSTATUS rpccli_netr_DsRGetDCNameEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client_account, uint32_t mask, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo *info)
 {
        struct netr_DsRGetDCNameEx2 r;
        NTSTATUS status;
@@ -1197,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);
@@ -1506,7 +1526,7 @@ NTSTATUS rpccli_netr_NETRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli,
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator **return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative, uint32_t *flags)
+NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative, uint32_t *flags)
 {
        struct netr_LogonSamLogonWithFlags r;
        NTSTATUS status;
@@ -1515,7 +1535,7 @@ NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_
        r.in.server_name = server_name;
        r.in.computer_name = computer_name;
        r.in.credential = credential;
-       r.in.return_authenticator = *return_authenticator;
+       r.in.return_authenticator = return_authenticator;
        r.in.logon_level = logon_level;
        r.in.logon = logon;
        r.in.validation_level = validation_level;
@@ -1538,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;
index 65a77a24cb30e5941eb61c0117fb6a7c03179e11..b88dcca92fd26568c7611f13b0ca513626e8a721 100644 (file)
@@ -1,15 +1,15 @@
 #include "librpc/gen_ndr/ndr_netlogon.h"
 #ifndef __CLI_NETLOGON__
 #define __CLI_NETLOGON__
-NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasInfo **info);
+NTSTATUS rpccli_netr_LogonUasLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasInfo *info);
 NTSTATUS rpccli_netr_LogonUasLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, const char *workstation, struct netr_UasLogoffInfo *info);
-NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator **return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative);
-NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator **return_authenticator, uint16_t logon_level, union netr_LogonLevel logon);
+NTSTATUS rpccli_netr_LogonSamLogon(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative);
+NTSTATUS rpccli_netr_LogonSamLogoff(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon);
 NTSTATUS rpccli_netr_ServerReqChallenge(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Credential *credentials);
 NTSTATUS rpccli_netr_ServerAuthenticate(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials);
 NTSTATUS rpccli_netr_ServerPasswordSet(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Authenticator credential, struct samr_Password new_password, struct netr_Authenticator *return_authenticator);
-NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint64_t *sequence_num, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY **delta_enum_array);
-NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY **delta_enum_array);
+NTSTATUS rpccli_netr_DatabaseDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint64_t *sequence_num, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array);
+NTSTATUS rpccli_netr_DatabaseSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array);
 NTSTATUS rpccli_netr_AccountDeltas(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, struct netr_UAS_INFO_0 uas, uint32_t count, uint32_t level, uint32_t buffersize, struct netr_AccountBuffer *buffer, uint32_t *count_returned, uint32_t *total_entries, struct netr_UAS_INFO_0 *recordid);
 NTSTATUS rpccli_netr_AccountSync(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint32_t reference, uint32_t level, uint32_t buffersize, struct netr_AccountBuffer *buffer, uint32_t *count_returned, uint32_t *total_entries, uint32_t *next_reference, struct netr_UAS_INFO_0 *recordid);
 NTSTATUS rpccli_netr_GetDcName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *domainname, const char **dcname);
@@ -17,25 +17,25 @@ NTSTATUS rpccli_netr_LogonControl(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
 NTSTATUS rpccli_netr_GetAnyDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *domainname, const char **dcname);
 NTSTATUS rpccli_netr_LogonControl2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, uint32_t function_code, uint32_t level, union netr_CONTROL_DATA_INFORMATION data, union netr_CONTROL_QUERY_INFORMATION *query);
 NTSTATUS rpccli_netr_ServerAuthenticate2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials, uint32_t *negotiate_flags);
-NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint16_t restart_state, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY **delta_enum_array);
-NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint8_t *change_log_entry, uint32_t change_log_entry_size, struct netr_DELTA_ENUM_ARRAY **delta_enum_array);
+NTSTATUS rpccli_netr_DatabaseSync2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, enum netr_SamDatabaseID database_id, uint16_t restart_state, uint32_t *sync_context, uint32_t preferredmaximumlength, struct netr_DELTA_ENUM_ARRAY *delta_enum_array);
+NTSTATUS rpccli_netr_DatabaseRedo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, const char *computername, struct netr_Authenticator credential, struct netr_Authenticator *return_authenticator, uint8_t *change_log_entry, uint32_t change_log_entry_size, struct netr_DELTA_ENUM_ARRAY *delta_enum_array);
 NTSTATUS rpccli_netr_LogonControl2Ex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *logon_server, uint32_t function_code, uint32_t level, union netr_CONTROL_DATA_INFORMATION data, union netr_CONTROL_QUERY_INFORMATION *query);
 NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, struct GUID *site_guid, uint32_t flags, struct netr_DsRGetDCNameInfo **info);
+NTSTATUS rpccli_netr_DsRGetDCName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, struct GUID *site_guid, uint32_t flags, struct netr_DsRGetDCNameInfo *info);
 NTSTATUS rpccli_netr_NETRLOGONDUMMYROUTINE1(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_NETRLOGONSETSERVICEBITS(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_NETRLOGONGETTRUSTRID(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_NETRLOGONCOMPUTESERVERDIGEST(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_NETRLOGONCOMPUTECLIENTDIGEST(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_ServerAuthenticate3(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Credential *credentials, uint32_t *negotiate_flags, uint32_t *rid);
-NTSTATUS rpccli_netr_DsRGetDCNameEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo **info);
+NTSTATUS rpccli_netr_DsRGetDCNameEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo *info);
 NTSTATUS rpccli_netr_DsRGetSiteName(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *computer_name, const char **site);
 NTSTATUS rpccli_netr_LogonGetDomainInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint32_t level, union netr_DomainQuery query, union netr_DomainInfo *info);
 NTSTATUS rpccli_netr_ServerPasswordSet2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *account_name, enum netr_SchannelType secure_channel_type, const char *computer_name, struct netr_Authenticator credential, struct netr_CryptPassword new_password, struct netr_Authenticator *return_authenticator);
 NTSTATUS rpccli_netr_NETRSERVERPASSWORDGET(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_NETRLOGONSENDTOSAM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_DsRGetDCNameEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client_account, uint32_t mask, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo **info);
+NTSTATUS rpccli_netr_DsRGetDCNameEx2(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client_account, uint32_t mask, const char *domain_name, struct GUID *domain_guid, const char *site_name, uint32_t flags, struct netr_DsRGetDCNameInfo *info);
 NTSTATUS rpccli_netr_NETRLOGONGETTIMESERVICEPARENTDOMAIN(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_NETRENUMERATETRUSTEDDOMAINSEX(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_DSRADDRESSTOSITENAMESEXW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
@@ -46,6 +46,6 @@ NTSTATUS rpccli_netr_DSRDEREGISTERDNSHOSTRECORDS(struct rpc_pipe_client *cli, TA
 NTSTATUS rpccli_netr_NETRSERVERTRUSTPASSWORDSGET(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_DSRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_netr_NETRGETFORESTTRUSTINFORMATION(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator **return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative, uint32_t *flags);
+NTSTATUS rpccli_netr_LogonSamLogonWithFlags(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, const char *computer_name, struct netr_Authenticator *credential, struct netr_Authenticator *return_authenticator, uint16_t logon_level, union netr_LogonLevel logon, uint16_t validation_level, union netr_Validation *validation, uint8_t *authoritative, uint32_t *flags);
 NTSTATUS rpccli_netr_NETRSERVERGETTRUSTINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 #endif /* __CLI_NETLOGON__ */
index 7dde8c60e95b6eedce02cb184eded4473b989174..8470c7b3ac5cc1e429f5716b53ae43f3d2fe0c87 100644 (file)
@@ -6,7 +6,7 @@
 #include "includes.h"
 #include "librpc/gen_ndr/cli_srvsvc.h"
 
-NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetCharDevCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetCharDevCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetCharDevEnum r;
        NTSTATUS status;
@@ -16,7 +16,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *m
        r.in.level = level;
        r.in.ctr = ctr;
        r.in.max_buffer = max_buffer;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevEnum, &r);
@@ -38,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);
@@ -109,7 +111,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevControl(struct rpc_pipe_client *cli, TALLOC_CTX
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *user, uint32_t *level, union srvsvc_NetCharDevQCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *user, uint32_t *level, union srvsvc_NetCharDevQCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetCharDevQEnum r;
        NTSTATUS status;
@@ -120,7 +122,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *
        r.in.level = level;
        r.in.ctr = ctr;
        r.in.max_buffer = max_buffer;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQEnum, &r);
@@ -142,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);
@@ -182,7 +186,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQGetInfo(struct rpc_pipe_client *cli, TALLOC_CT
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, uint32_t level, union srvsvc_NetCharDevQInfo info, uint32_t **parm_error)
+NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, uint32_t level, union srvsvc_NetCharDevQInfo info, uint32_t *parm_error)
 {
        struct srvsvc_NetCharDevQSetInfo r;
        NTSTATUS status;
@@ -192,7 +196,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CT
        r.in.queue_name = queue_name;
        r.in.level = level;
        r.in.info = info;
-       r.in.parm_error = *parm_error;
+       r.in.parm_error = parm_error;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetCharDevQSetInfo, &r);
@@ -211,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);
@@ -280,7 +286,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, TALLOC_
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t *level, union srvsvc_NetConnCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t *level, union srvsvc_NetConnCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetConnEnum r;
        NTSTATUS status;
@@ -291,7 +297,7 @@ NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        r.in.level = level;
        r.in.ctr = ctr;
        r.in.max_buffer = max_buffer;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetConnEnum, &r);
@@ -313,13 +319,15 @@ 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);
 }
 
-NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, const char *user, uint32_t *level, union srvsvc_NetFileCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, const char *user, uint32_t *level, union srvsvc_NetFileCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetFileEnum r;
        NTSTATUS status;
@@ -331,7 +339,7 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        r.in.level = level;
        r.in.ctr = ctr;
        r.in.max_buffer = max_buffer;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetFileEnum, &r);
@@ -353,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);
@@ -423,7 +433,7 @@ NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user, uint32_t *level, union srvsvc_NetSessCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user, uint32_t *level, union srvsvc_NetSessCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetSessEnum r;
        NTSTATUS status;
@@ -435,7 +445,7 @@ NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        r.in.level = level;
        r.in.ctr = ctr;
        r.in.max_buffer = max_buffer;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetSessEnum, &r);
@@ -457,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);
@@ -495,7 +507,7 @@ NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetShareInfo info, uint32_t **parm_error)
+NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetShareInfo info, uint32_t *parm_error)
 {
        struct srvsvc_NetShareAdd r;
        NTSTATUS status;
@@ -504,7 +516,7 @@ NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        r.in.server_unc = server_unc;
        r.in.level = level;
        r.in.info = info;
-       r.in.parm_error = *parm_error;
+       r.in.parm_error = parm_error;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetShareAdd, &r);
@@ -523,13 +535,15 @@ 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);
 }
 
-NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetShareEnumAll r;
        NTSTATUS status;
@@ -539,7 +553,7 @@ NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *
        r.in.level = level;
        r.in.ctr = ctr;
        r.in.max_buffer = max_buffer;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnumAll, &r);
@@ -561,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);
@@ -600,7 +616,7 @@ NTSTATUS rpccli_srvsvc_NetShareGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo info, uint32_t **parm_error)
+NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo info, uint32_t *parm_error)
 {
        struct srvsvc_NetShareSetInfo r;
        NTSTATUS status;
@@ -610,7 +626,7 @@ NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
        r.in.share_name = share_name;
        r.in.level = level;
        r.in.info = info;
-       r.in.parm_error = *parm_error;
+       r.in.parm_error = parm_error;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetShareSetInfo, &r);
@@ -629,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);
@@ -763,7 +781,7 @@ NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *me
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo info, uint32_t **parm_error)
+NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo info, uint32_t *parm_error)
 {
        struct srvsvc_NetSrvSetInfo r;
        NTSTATUS status;
@@ -772,7 +790,7 @@ NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *me
        r.in.server_unc = server_unc;
        r.in.level = level;
        r.in.info = info;
-       r.in.parm_error = *parm_error;
+       r.in.parm_error = parm_error;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetSrvSetInfo, &r);
@@ -791,13 +809,15 @@ 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);
 }
 
-NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, struct srvsvc_NetDiskInfo *info, uint32_t maxlen, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, struct srvsvc_NetDiskInfo *info, uint32_t maxlen, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetDiskEnum r;
        NTSTATUS status;
@@ -807,7 +827,7 @@ NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        r.in.level = level;
        r.in.info = info;
        r.in.maxlen = maxlen;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetDiskEnum, &r);
@@ -828,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);
@@ -900,7 +922,7 @@ NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, TALLOC_CTX *
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetTransportCtr *transports, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetTransportCtr *transports, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetTransportEnum r;
        NTSTATUS status;
@@ -910,7 +932,7 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX
        r.in.level = level;
        r.in.transports = transports;
        r.in.max_buffer = max_buffer;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetTransportEnum, &r);
@@ -932,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);
@@ -970,7 +994,7 @@ NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, TALLOC_CTX *
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, struct srvsvc_NetRemoteTODInfo **info)
+NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, struct srvsvc_NetRemoteTODInfo *info)
 {
        struct srvsvc_NetRemoteTOD r;
        NTSTATUS status;
@@ -995,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);
@@ -1067,7 +1093,7 @@ NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint8_t **can_path, uint32_t maxbuf, const char *prefix, uint32_t *pathtype, uint32_t pathflags)
+NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint8_t *can_path, uint32_t maxbuf, const char *prefix, uint32_t *pathtype, uint32_t pathflags)
 {
        struct srvsvc_NetPathCanonicalize r;
        NTSTATUS status;
@@ -1097,7 +1123,7 @@ NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, TALLOC_C
        }
        
        /* Return variables */
-       *can_path = r.out.can_path;
+       *can_path = *r.out.can_path;
        *pathtype = *r.out.pathtype;
        
        /* Return result */
@@ -1234,7 +1260,7 @@ NTSTATUS rpccli_srvsvc_NetPRNameCompare(struct rpc_pipe_client *cli, TALLOC_CTX
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle)
+NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct srvsvc_NetShareEnum r;
        NTSTATUS status;
@@ -1244,7 +1270,7 @@ NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        r.in.level = level;
        r.in.ctr = ctr;
        r.in.max_buffer = max_buffer;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetShareEnum, &r);
@@ -1266,13 +1292,15 @@ 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);
 }
 
-NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, uint32_t reserved, struct policy_handle **hnd)
+NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, uint32_t reserved, struct policy_handle *hnd)
 {
        struct srvsvc_NetShareDelStart r;
        NTSTATUS status;
@@ -1299,19 +1327,21 @@ 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);
 }
 
-NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle **hnd)
+NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *hnd)
 {
        struct srvsvc_NetShareDelCommit r;
        NTSTATUS status;
        
        /* In parameters */
-       r.in.hnd = *hnd;
+       r.in.hnd = hnd;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(srvsvc_NetShareDelCommit, &r);
@@ -1330,13 +1360,15 @@ 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);
 }
 
-NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf **sd_buf)
+NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf *sd_buf)
 {
        struct srvsvc_NetGetFileSecurity r;
        NTSTATUS status;
@@ -1364,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);
index 610d44a6635db0f5c99e3fb4547187f4e48a932b..3dcb92bfea78472e71175c7cb5c5610987ea7621 100644 (file)
@@ -1,46 +1,46 @@
 #include "librpc/gen_ndr/ndr_srvsvc.h"
 #ifndef __CLI_SRVSVC__
 #define __CLI_SRVSVC__
-NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetCharDevCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle);
+NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetCharDevCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
 NTSTATUS rpccli_srvsvc_NetCharDevGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, uint32_t level, union srvsvc_NetCharDevInfo *info);
 NTSTATUS rpccli_srvsvc_NetCharDevControl(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, uint32_t opcode);
-NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *user, uint32_t *level, union srvsvc_NetCharDevQCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle);
+NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *user, uint32_t *level, union srvsvc_NetCharDevQCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
 NTSTATUS rpccli_srvsvc_NetCharDevQGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, const char *user, uint32_t level, union srvsvc_NetCharDevQInfo *info);
-NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, uint32_t level, union srvsvc_NetCharDevQInfo info, uint32_t **parm_error);
+NTSTATUS rpccli_srvsvc_NetCharDevQSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, uint32_t level, union srvsvc_NetCharDevQInfo info, uint32_t *parm_error);
 NTSTATUS rpccli_srvsvc_NetCharDevQPurge(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name);
 NTSTATUS rpccli_srvsvc_NetCharDevQPurgeSelf(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *queue_name, const char *computer_name);
-NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t *level, union srvsvc_NetConnCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle);
-NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, const char *user, uint32_t *level, union srvsvc_NetFileCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle);
+NTSTATUS rpccli_srvsvc_NetConnEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t *level, union srvsvc_NetConnCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
+NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, const char *user, uint32_t *level, union srvsvc_NetFileCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
 NTSTATUS rpccli_srvsvc_NetFileGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t fid, uint32_t level, union srvsvc_NetFileInfo *info);
 NTSTATUS rpccli_srvsvc_NetFileClose(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t fid);
-NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user, uint32_t *level, union srvsvc_NetSessCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle);
+NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user, uint32_t *level, union srvsvc_NetSessCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
 NTSTATUS rpccli_srvsvc_NetSessDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *client, const char *user);
-NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetShareInfo info, uint32_t **parm_error);
-NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle);
+NTSTATUS rpccli_srvsvc_NetShareAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetShareInfo info, uint32_t *parm_error);
+NTSTATUS rpccli_srvsvc_NetShareEnumAll(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
 NTSTATUS rpccli_srvsvc_NetShareGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo *info);
-NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo info, uint32_t **parm_error);
+NTSTATUS rpccli_srvsvc_NetShareSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t level, union srvsvc_NetShareInfo info, uint32_t *parm_error);
 NTSTATUS rpccli_srvsvc_NetShareDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t reserved);
 NTSTATUS rpccli_srvsvc_NetShareDelSticky(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share_name, uint32_t reserved);
 NTSTATUS rpccli_srvsvc_NetShareCheck(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *device_name, enum srvsvc_ShareType *type);
 NTSTATUS rpccli_srvsvc_NetSrvGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo *info);
-NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo info, uint32_t **parm_error);
-NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, struct srvsvc_NetDiskInfo *info, uint32_t maxlen, uint32_t *totalentries, uint32_t **resume_handle);
+NTSTATUS rpccli_srvsvc_NetSrvSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetSrvInfo info, uint32_t *parm_error);
+NTSTATUS rpccli_srvsvc_NetDiskEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, struct srvsvc_NetDiskInfo *info, uint32_t maxlen, uint32_t *totalentries, uint32_t *resume_handle);
 NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *service, uint32_t level, uint32_t options, struct srvsvc_Statistics *stats);
 NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetTransportInfo info);
-NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetTransportCtr *transports, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle);
+NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetTransportCtr *transports, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
 NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t unknown, struct srvsvc_NetTransportInfo0 transport);
-NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, struct srvsvc_NetRemoteTODInfo **info);
+NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, struct srvsvc_NetRemoteTODInfo *info);
 NTSTATUS rpccli_srvsvc_NetSetServiceBits(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *transport, uint32_t servicebits, uint32_t updateimmediately);
 NTSTATUS rpccli_srvsvc_NetPathType(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint32_t pathflags, uint32_t *pathtype);
-NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint8_t **can_path, uint32_t maxbuf, const char *prefix, uint32_t *pathtype, uint32_t pathflags);
+NTSTATUS rpccli_srvsvc_NetPathCanonicalize(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path, uint8_t *can_path, uint32_t maxbuf, const char *prefix, uint32_t *pathtype, uint32_t pathflags);
 NTSTATUS rpccli_srvsvc_NetPathCompare(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *path1, const char *path2, uint32_t pathtype, uint32_t pathflags);
 NTSTATUS rpccli_srvsvc_NetNameValidate(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *name, uint32_t name_type, uint32_t flags);
 NTSTATUS rpccli_srvsvc_NETRPRNAMECANONICALIZE(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_srvsvc_NetPRNameCompare(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *name1, const char *name2, uint32_t name_type, uint32_t flags);
-NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t **resume_handle);
-NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, uint32_t reserved, struct policy_handle **hnd);
-NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle **hnd);
-NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf **sd_buf);
+NTSTATUS rpccli_srvsvc_NetShareEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t *level, union srvsvc_NetShareCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
+NTSTATUS rpccli_srvsvc_NetShareDelStart(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, uint32_t reserved, struct policy_handle *hnd);
+NTSTATUS rpccli_srvsvc_NetShareDelCommit(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *hnd);
+NTSTATUS rpccli_srvsvc_NetGetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf *sd_buf);
 NTSTATUS rpccli_srvsvc_NetSetFileSecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *share, const char *file, uint32_t securityinformation, struct sec_desc_buf sd_buf);
 NTSTATUS rpccli_srvsvc_NetServerTransportAddEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, uint32_t level, union srvsvc_NetTransportInfo info);
 NTSTATUS rpccli_srvsvc_NetServerSetServiceBitsEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc, const char *emulated_server_unc, const char *transport, uint32_t servicebitsofinterest, uint32_t servicebits, uint32_t updateimmediately);
index 237974bdc78a0a5c98275a6f74f9d48ca9a4a0eb..a3b4df4992a6a891866ce04d6b84c6288a10cb87 100644 (file)
@@ -381,7 +381,7 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigW(struct rpc_pipe_client *cli, TALLOC_
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t **TagId, uint8_t *dependencies, uint32_t dependencies_size, const char *service_start_name, uint8_t *password, uint32_t password_size, struct policy_handle *handle)
+NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t *TagId, uint8_t *dependencies, uint32_t dependencies_size, const char *service_start_name, uint8_t *password, uint32_t password_size, struct policy_handle *handle)
 {
        struct svcctl_CreateServiceW r;
        NTSTATUS status;
@@ -396,7 +396,7 @@ NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        r.in.error_control = error_control;
        r.in.binary_path = binary_path;
        r.in.LoadOrderGroupKey = LoadOrderGroupKey;
-       r.in.TagId = *TagId;
+       r.in.TagId = TagId;
        r.in.dependencies = dependencies;
        r.in.dependencies_size = dependencies_size;
        r.in.service_start_name = service_start_name;
@@ -420,14 +420,16 @@ 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 */
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS **status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned)
+NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS *status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned)
 {
        struct svcctl_EnumDependentServicesW r;
        NTSTATUS status;
@@ -454,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;
        
@@ -462,7 +466,7 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLO
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t **service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t **resume_handle)
+NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t *service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t *resume_handle)
 {
        struct svcctl_EnumServicesStatusW r;
        NTSTATUS status;
@@ -472,7 +476,7 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_C
        r.in.type = type;
        r.in.state = state;
        r.in.buf_size = buf_size;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(svcctl_EnumServicesStatusW, &r);
@@ -491,10 +495,12 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_C
        }
        
        /* Return variables */
-       *service = r.out.service;
+       *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);
@@ -566,7 +572,7 @@ NTSTATUS rpccli_svcctl_OpenServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_QueryServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t **query, uint32_t buf_size, uint32_t *bytes_needed)
+NTSTATUS rpccli_svcctl_QueryServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t *query, uint32_t buf_size, uint32_t *bytes_needed)
 {
        struct svcctl_QueryServiceConfigW r;
        NTSTATUS status;
@@ -592,7 +598,7 @@ NTSTATUS rpccli_svcctl_QueryServiceConfigW(struct rpc_pipe_client *cli, TALLOC_C
        }
        
        /* Return variables */
-       *query = r.out.query;
+       *query = *r.out.query;
        *bytes_needed = *r.out.bytes_needed;
        
        /* Return result */
@@ -664,7 +670,7 @@ NTSTATUS rpccli_svcctl_StartServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *me
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t **display_name_length)
+NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t *display_name_length)
 {
        struct svcctl_GetServiceDisplayNameW r;
        NTSTATUS status;
@@ -672,7 +678,7 @@ NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLO
        /* In parameters */
        r.in.handle = handle;
        r.in.service_name = service_name;
-       r.in.display_name_length = *display_name_length;
+       r.in.display_name_length = display_name_length;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(svcctl_GetServiceDisplayNameW, &r);
@@ -692,13 +698,15 @@ 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);
 }
 
-NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t **display_name_length)
+NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t *display_name_length)
 {
        struct svcctl_GetServiceKeyNameW r;
        NTSTATUS status;
@@ -706,7 +714,7 @@ NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CT
        /* In parameters */
        r.in.handle = handle;
        r.in.service_name = service_name;
-       r.in.display_name_length = *display_name_length;
+       r.in.display_name_length = display_name_length;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(svcctl_GetServiceKeyNameW, &r);
@@ -726,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);
@@ -805,7 +815,7 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfigA(struct rpc_pipe_client *cli, TALLOC_
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t **TagId, const char *dependencies, const char *service_start_name, const char *password)
+NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t *TagId, const char *dependencies, const char *service_start_name, const char *password)
 {
        struct svcctl_CreateServiceA r;
        NTSTATUS status;
@@ -841,13 +851,15 @@ 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);
 }
 
-NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS **status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned)
+NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS *status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned)
 {
        struct svcctl_EnumDependentServicesA r;
        NTSTATUS status;
@@ -874,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;
        
@@ -882,7 +896,7 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLO
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t **service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t **resume_handle)
+NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t *service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t *resume_handle)
 {
        struct svcctl_EnumServicesStatusA r;
        NTSTATUS status;
@@ -892,7 +906,7 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_C
        r.in.type = type;
        r.in.state = state;
        r.in.buf_size = buf_size;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(svcctl_EnumServicesStatusA, &r);
@@ -911,10 +925,12 @@ NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_C
        }
        
        /* Return variables */
-       *service = r.out.service;
+       *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);
@@ -985,7 +1001,7 @@ NTSTATUS rpccli_svcctl_OpenServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_QueryServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t **query, uint32_t buf_size, uint32_t *bytes_needed)
+NTSTATUS rpccli_svcctl_QueryServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t *query, uint32_t buf_size, uint32_t *bytes_needed)
 {
        struct svcctl_QueryServiceConfigA r;
        NTSTATUS status;
@@ -1011,7 +1027,7 @@ NTSTATUS rpccli_svcctl_QueryServiceConfigA(struct rpc_pipe_client *cli, TALLOC_C
        }
        
        /* Return variables */
-       *query = r.out.query;
+       *query = *r.out.query;
        *bytes_needed = *r.out.bytes_needed;
        
        /* Return result */
@@ -1083,7 +1099,7 @@ NTSTATUS rpccli_svcctl_StartServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *me
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t **display_name_length)
+NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t *display_name_length)
 {
        struct svcctl_GetServiceDisplayNameA r;
        NTSTATUS status;
@@ -1091,7 +1107,7 @@ NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLO
        /* In parameters */
        r.in.handle = handle;
        r.in.service_name = service_name;
-       r.in.display_name_length = *display_name_length;
+       r.in.display_name_length = display_name_length;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(svcctl_GetServiceDisplayNameA, &r);
@@ -1111,13 +1127,15 @@ 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);
 }
 
-NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t **display_name_length)
+NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t *display_name_length)
 {
        struct svcctl_GetServiceKeyNameA r;
        NTSTATUS status;
@@ -1125,7 +1143,7 @@ NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CT
        /* In parameters */
        r.in.handle = handle;
        r.in.service_name = service_name;
-       r.in.display_name_length = *display_name_length;
+       r.in.display_name_length = display_name_length;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(svcctl_GetServiceKeyNameA, &r);
@@ -1145,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);
@@ -1273,7 +1293,7 @@ NTSTATUS rpccli_svcctl_ChangeServiceConfig2W(struct rpc_pipe_client *cli, TALLOC
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t **buffer, uint32_t buf_size, uint32_t *bytes_needed)
+NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed)
 {
        struct svcctl_QueryServiceConfig2A r;
        NTSTATUS status;
@@ -1300,14 +1320,14 @@ NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_
        }
        
        /* Return variables */
-       *buffer = r.out.buffer;
+       *buffer = *r.out.buffer;
        *bytes_needed = *r.out.bytes_needed;
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t **buffer, uint32_t buf_size, uint32_t *bytes_needed)
+NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed)
 {
        struct svcctl_QueryServiceConfig2W r;
        NTSTATUS status;
@@ -1334,14 +1354,14 @@ NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_
        }
        
        /* Return variables */
-       *buffer = r.out.buffer;
+       *buffer = *r.out.buffer;
        *bytes_needed = *r.out.bytes_needed;
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t **buffer, uint32_t buf_size, uint32_t *bytes_needed)
+NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed)
 {
        struct svcctl_QueryServiceStatusEx r;
        NTSTATUS status;
@@ -1368,14 +1388,14 @@ NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli, TALLOC_
        }
        
        /* Return variables */
-       *buffer = r.out.buffer;
+       *buffer = *r.out.buffer;
        *bytes_needed = *r.out.bytes_needed;
        
        /* Return result */
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t **services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t **resume_handle, const char **group_name)
+NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t *services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t *resume_handle, const char **group_name)
 {
        struct EnumServicesStatusExA r;
        NTSTATUS status;
@@ -1386,7 +1406,7 @@ NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *m
        r.in.type = type;
        r.in.state = state;
        r.in.buf_size = buf_size;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(EnumServicesStatusExA, &r);
@@ -1405,17 +1425,19 @@ NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *m
        }
        
        /* Return variables */
-       *services = r.out.services;
+       *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 */
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t **services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t **resume_handle, const char **group_name)
+NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t *services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t *resume_handle, const char **group_name)
 {
        struct EnumServicesStatusExW r;
        NTSTATUS status;
@@ -1426,7 +1448,7 @@ NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        r.in.type = type;
        r.in.state = state;
        r.in.buf_size = buf_size;
-       r.in.resume_handle = *resume_handle;
+       r.in.resume_handle = resume_handle;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(EnumServicesStatusExW, &r);
@@ -1445,10 +1467,12 @@ NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *m
        }
        
        /* Return variables */
-       *services = r.out.services;
+       *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 */
index 306f7e7a21e28b2ecad724317863f5a933e8dff0..0812427b4cef0fa824f2f15ee03dd297d435963b 100644 (file)
@@ -13,36 +13,36 @@ NTSTATUS rpccli_svcctl_UnlockServiceDatabase(struct rpc_pipe_client *cli, TALLOC
 NTSTATUS rpccli_svcctl_NotifyBootConfigStatus(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_svcctl_SCSetServiceBitsW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t bits, uint32_t bitson, uint32_t immediate);
 NTSTATUS rpccli_svcctl_ChangeServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t start, uint32_t error, const char *binary_path, const char *load_order_group, uint32_t *tag_id, const char *dependencies, const char *service_start_name, const char *password, const char *display_name);
-NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t **TagId, uint8_t *dependencies, uint32_t dependencies_size, const char *service_start_name, uint8_t *password, uint32_t password_size, struct policy_handle *handle);
-NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS **status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned);
-NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t **service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t **resume_handle);
+NTSTATUS rpccli_svcctl_CreateServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t *TagId, uint8_t *dependencies, uint32_t dependencies_size, const char *service_start_name, uint8_t *password, uint32_t password_size, struct policy_handle *handle);
+NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS *status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned);
+NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t *service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t *resume_handle);
 NTSTATUS rpccli_svcctl_OpenSCManagerW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *MachineName, const char *DatabaseName, uint32_t access_mask, struct policy_handle *handle);
 NTSTATUS rpccli_svcctl_OpenServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_svcctl_QueryServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t **query, uint32_t buf_size, uint32_t *bytes_needed);
+NTSTATUS rpccli_svcctl_QueryServiceConfigW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t *query, uint32_t buf_size, uint32_t *bytes_needed);
 NTSTATUS rpccli_svcctl_QueryServiceLockStatusW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t buf_size, struct SERVICE_LOCK_STATUS *status, uint32_t *required_buf_size);
 NTSTATUS rpccli_svcctl_StartServiceW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t NumArgs, const char *Arguments);
-NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t **display_name_length);
-NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t **display_name_length);
+NTSTATUS rpccli_svcctl_GetServiceDisplayNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t *display_name_length);
+NTSTATUS rpccli_svcctl_GetServiceKeyNameW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t *display_name_length);
 NTSTATUS rpccli_svcctl_SCSetServiceBitsA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t bits, uint32_t bitson, uint32_t immediate);
 NTSTATUS rpccli_svcctl_ChangeServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t start, uint32_t error, const char *binary_path, const char *load_order_group, uint32_t *tag_id, const char *dependencies, const char *service_start_name, const char *password, const char *display_name);
-NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t **TagId, const char *dependencies, const char *service_start_name, const char *password);
-NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS **status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned);
-NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t **service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t **resume_handle);
+NTSTATUS rpccli_svcctl_CreateServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *ServiceName, const char *DisplayName, uint32_t desired_access, uint32_t type, uint32_t start_type, uint32_t error_control, const char *binary_path, const char *LoadOrderGroupKey, uint32_t *TagId, const char *dependencies, const char *service_start_name, const char *password);
+NTSTATUS rpccli_svcctl_EnumDependentServicesA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *service, uint32_t state, struct ENUM_SERVICE_STATUS *status, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *services_returned);
+NTSTATUS rpccli_svcctl_EnumServicesStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t type, uint32_t state, uint32_t buf_size, uint8_t *service, uint32_t *bytes_needed, uint32_t *services_returned, uint32_t *resume_handle);
 NTSTATUS rpccli_svcctl_OpenSCManagerA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *MachineName, const char *DatabaseName, uint32_t access_mask, struct policy_handle *handle);
 NTSTATUS rpccli_svcctl_OpenServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager_handle, const char *ServiceName, uint32_t access_mask);
-NTSTATUS rpccli_svcctl_QueryServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t **query, uint32_t buf_size, uint32_t *bytes_needed);
+NTSTATUS rpccli_svcctl_QueryServiceConfigA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint8_t *query, uint32_t buf_size, uint32_t *bytes_needed);
 NTSTATUS rpccli_svcctl_QueryServiceLockStatusA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t buf_size, struct SERVICE_LOCK_STATUS *status, uint32_t *required_buf_size);
 NTSTATUS rpccli_svcctl_StartServiceA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t NumArgs, const char *Arguments);
-NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t **display_name_length);
-NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t **display_name_length);
+NTSTATUS rpccli_svcctl_GetServiceDisplayNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **display_name, uint32_t *display_name_length);
+NTSTATUS rpccli_svcctl_GetServiceKeyNameA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, const char *service_name, const char **key_name, uint32_t *display_name_length);
 NTSTATUS rpccli_svcctl_GetCurrentGroupeStateW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_svcctl_EnumServiceGroupW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_svcctl_ChangeServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *info);
 NTSTATUS rpccli_svcctl_ChangeServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *info);
-NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t **buffer, uint32_t buf_size, uint32_t *bytes_needed);
-NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t **buffer, uint32_t buf_size, uint32_t *bytes_needed);
-NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t **buffer, uint32_t buf_size, uint32_t *bytes_needed);
-NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t **services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t **resume_handle, const char **group_name);
-NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t **services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t **resume_handle, const char **group_name);
+NTSTATUS rpccli_svcctl_QueryServiceConfig2A(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed);
+NTSTATUS rpccli_svcctl_QueryServiceConfig2W(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed);
+NTSTATUS rpccli_svcctl_QueryServiceStatusEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t info_level, uint8_t *buffer, uint32_t buf_size, uint32_t *bytes_needed);
+NTSTATUS rpccli_EnumServicesStatusExA(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t *services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t *resume_handle, const char **group_name);
+NTSTATUS rpccli_EnumServicesStatusExW(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *scmanager, uint32_t info_level, uint32_t type, uint32_t state, uint8_t *services, uint32_t buf_size, uint32_t *bytes_needed, uint32_t *service_returned, uint32_t *resume_handle, const char **group_name);
 NTSTATUS rpccli_svcctl_SCSendTSMessage(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 #endif /* __CLI_SVCCTL__ */
index 0621183b08425e2bf6fb60fec0d74a64aa2ae6f0..d9a9b1fe878dc64006272dece1b4b35799bdb5c8 100644 (file)
@@ -130,7 +130,7 @@ NTSTATUS rpccli_unixinfo_GidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        return r.out.result;
 }
 
-NTSTATUS rpccli_unixinfo_GetPWUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t *count, uint64_t *uids, struct unixinfo_GetPWUidInfo **infos)
+NTSTATUS rpccli_unixinfo_GetPWUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t *count, uint64_t *uids, struct unixinfo_GetPWUidInfo *infos)
 {
        struct unixinfo_GetPWUid r;
        NTSTATUS status;
@@ -157,7 +157,7 @@ NTSTATUS rpccli_unixinfo_GetPWUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        
        /* Return variables */
        *count = *r.out.count;
-       *infos = r.out.infos;
+       *infos = *r.out.infos;
        
        /* Return result */
        return r.out.result;
index dc92283d83423c8dff4c08b975d61dc91f763c63..f0f2b54626b78b3fae7c64c8963779a0ebbeb75e 100644 (file)
@@ -5,5 +5,5 @@ NTSTATUS rpccli_unixinfo_SidToUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
 NTSTATUS rpccli_unixinfo_UidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint64_t uid, struct dom_sid *sid);
 NTSTATUS rpccli_unixinfo_SidToGid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct dom_sid sid, uint64_t *gid);
 NTSTATUS rpccli_unixinfo_GidToSid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint64_t gid, struct dom_sid *sid);
-NTSTATUS rpccli_unixinfo_GetPWUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t *count, uint64_t *uids, struct unixinfo_GetPWUidInfo **infos);
+NTSTATUS rpccli_unixinfo_GetPWUid(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint32_t *count, uint64_t *uids, struct unixinfo_GetPWUidInfo *infos);
 #endif /* __CLI_UNIXINFO__ */
index 0d52c54467a3d580010a4b9f8aad0c91f9a92074..79b1a2d93a6e826d3aa4804170a94c290cdc5ba9 100644 (file)
@@ -197,7 +197,7 @@ NTSTATUS rpccli_winreg_CloseKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String name, struct winreg_String keyclass, uint32_t options, uint32_t access_mask, struct winreg_SecBuf *secdesc, struct policy_handle *new_handle, enum winreg_CreateAction **action_taken)
+NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String name, struct winreg_String keyclass, uint32_t options, uint32_t access_mask, struct winreg_SecBuf *secdesc, struct policy_handle *new_handle, enum winreg_CreateAction *action_taken)
 {
        struct winreg_CreateKey r;
        NTSTATUS status;
@@ -209,7 +209,7 @@ NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        r.in.options = options;
        r.in.access_mask = access_mask;
        r.in.secdesc = secdesc;
-       r.in.action_taken = *action_taken;
+       r.in.action_taken = action_taken;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(winreg_CreateKey, &r);
@@ -229,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);
@@ -297,7 +299,7 @@ NTSTATUS rpccli_winreg_DeleteValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_StringBuf *name, struct winreg_StringBuf **keyclass, NTTIME **last_changed_time)
+NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_StringBuf *name, struct winreg_StringBuf *keyclass, NTTIME *last_changed_time)
 {
        struct winreg_EnumKey r;
        NTSTATUS status;
@@ -306,8 +308,8 @@ NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        r.in.handle = handle;
        r.in.enum_index = enum_index;
        r.in.name = name;
-       r.in.keyclass = *keyclass;
-       r.in.last_changed_time = *last_changed_time;
+       r.in.keyclass = keyclass;
+       r.in.last_changed_time = last_changed_time;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(winreg_EnumKey, &r);
@@ -327,14 +329,18 @@ 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);
 }
 
-NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_ValNameBuf *name, enum winreg_Type **type, uint8_t **data, uint32_t **data_size, uint32_t **value_length)
+NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_ValNameBuf *name, enum winreg_Type *type, uint8_t **data, uint32_t *data_size, uint32_t *value_length)
 {
        struct winreg_EnumValue r;
        NTSTATUS status;
@@ -343,10 +349,10 @@ NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ct
        r.in.handle = handle;
        r.in.enum_index = enum_index;
        r.in.name = name;
-       r.in.type = *type;
-       r.in.data = *data;
-       r.in.data_size = *data_size;
-       r.in.value_length = *value_length;
+       r.in.type = type;
+       r.in.data = data;
+       r.in.data_size = data_size;
+       r.in.value_length = value_length;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(winreg_EnumValue, &r);
@@ -366,10 +372,16 @@ 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;
+       }
+       *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);
@@ -580,7 +592,7 @@ NTSTATUS rpccli_winreg_QueryInfoKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem
        return werror_to_ntstatus(r.out.result);
 }
 
-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_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)
 {
        struct winreg_QueryValue r;
        NTSTATUS status;
@@ -588,10 +600,10 @@ NTSTATUS rpccli_winreg_QueryValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_c
        /* In parameters */
        r.in.handle = handle;
        r.in.value_name = value_name;
-       r.in.type = *type;
-       r.in.data = *data;
-       r.in.data_size = *data_size;
-       r.in.value_length = *value_length;
+       r.in.type = type;
+       r.in.data = data;
+       r.in.data_size = data_size;
+       r.in.value_length = value_length;
        
        if (DEBUGLEVEL >= 10)
                NDR_PRINT_IN_DEBUG(winreg_QueryValue, &r);
@@ -610,10 +622,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);
@@ -966,7 +986,7 @@ NTSTATUS rpccli_winreg_OpenHKDD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *key_handle, struct QueryMultipleValue *values, uint32_t num_values, uint8_t **buffer, uint32_t *buffer_size)
+NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *key_handle, struct QueryMultipleValue *values, uint32_t num_values, uint8_t *buffer, uint32_t *buffer_size)
 {
        struct winreg_QueryMultipleValues r;
        NTSTATUS status;
@@ -975,7 +995,7 @@ NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_C
        r.in.key_handle = key_handle;
        r.in.values = values;
        r.in.num_values = num_values;
-       r.in.buffer = *buffer;
+       r.in.buffer = buffer;
        r.in.buffer_size = buffer_size;
        
        if (DEBUGLEVEL >= 10)
@@ -996,7 +1016,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 */
index edd4c3e7e4435bc614b7eb72a2dd18cde10dc041..ef49b8037f9a6b11a3115491d7b9e704acb84157 100644 (file)
@@ -7,18 +7,18 @@ NTSTATUS rpccli_winreg_OpenHKLM(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx
 NTSTATUS rpccli_winreg_OpenHKPD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
 NTSTATUS rpccli_winreg_OpenHKU(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
 NTSTATUS rpccli_winreg_CloseKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String name, struct winreg_String keyclass, uint32_t options, uint32_t access_mask, struct winreg_SecBuf *secdesc, struct policy_handle *new_handle, enum winreg_CreateAction **action_taken);
+NTSTATUS rpccli_winreg_CreateKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String name, struct winreg_String keyclass, uint32_t options, uint32_t access_mask, struct winreg_SecBuf *secdesc, struct policy_handle *new_handle, enum winreg_CreateAction *action_taken);
 NTSTATUS rpccli_winreg_DeleteKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String key);
 NTSTATUS rpccli_winreg_DeleteValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String value);
-NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_StringBuf *name, struct winreg_StringBuf **keyclass, NTTIME **last_changed_time);
-NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_ValNameBuf *name, enum winreg_Type **type, uint8_t **data, uint32_t **data_size, uint32_t **value_length);
+NTSTATUS rpccli_winreg_EnumKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_StringBuf *name, struct winreg_StringBuf *keyclass, NTTIME *last_changed_time);
+NTSTATUS rpccli_winreg_EnumValue(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t enum_index, struct winreg_ValNameBuf *name, enum winreg_Type *type, uint8_t **data, uint32_t *data_size, uint32_t *value_length);
 NTSTATUS rpccli_winreg_FlushKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle);
 NTSTATUS rpccli_winreg_GetKeySecurity(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t sec_info, struct KeySecurityData *sd);
 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_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_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);
 NTSTATUS rpccli_winreg_SaveKey(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, struct winreg_String *filename, struct KeySecurityAttribute *sec_attrib);
@@ -30,7 +30,7 @@ NTSTATUS rpccli_winreg_AbortSystemShutdown(struct rpc_pipe_client *cli, TALLOC_C
 NTSTATUS rpccli_winreg_GetVersion(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *handle, uint32_t *version);
 NTSTATUS rpccli_winreg_OpenHKCC(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
 NTSTATUS rpccli_winreg_OpenHKDD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
-NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *key_handle, struct QueryMultipleValue *values, uint32_t num_values, uint8_t **buffer, uint32_t *buffer_size);
+NTSTATUS rpccli_winreg_QueryMultipleValues(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, struct policy_handle *key_handle, struct QueryMultipleValue *values, uint32_t num_values, uint8_t *buffer, uint32_t *buffer_size);
 NTSTATUS rpccli_winreg_InitiateSystemShutdownEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *hostname, struct initshutdown_String *message, uint32_t timeout, uint8_t force_apps, uint8_t reboot, uint32_t reason);
 NTSTATUS rpccli_winreg_SaveKeyEx(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_winreg_OpenHKPT(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, uint16_t *system_name, uint32_t access_mask, struct policy_handle *handle);
index 04550efbe5f169d14e815e0b9a458bdfc1457570..918851a15e27fa11936490d59ee2c9e29361af37 100644 (file)
@@ -72,7 +72,7 @@ NTSTATUS rpccli_wkssvc_NetWkstaSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_wkssvc_NetWkstaEnumUsers(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t level, union WKS_USER_ENUM_UNION *users, uint32_t prefmaxlen, uint32_t **entriesread, uint32_t **totalentries, uint32_t *resumehandle)
+NTSTATUS rpccli_wkssvc_NetWkstaEnumUsers(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t level, union WKS_USER_ENUM_UNION *users, uint32_t prefmaxlen, uint32_t *entriesread, uint32_t *totalentries, uint32_t *resumehandle)
 {
        struct wkssvc_NetWkstaEnumUsers r;
        NTSTATUS status;
@@ -102,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 */
@@ -168,7 +172,7 @@ NTSTATUS rpccli_WKSSVC_NETRWKSTAUSERSETINFO(struct rpc_pipe_client *cli, TALLOC_
        return werror_to_ntstatus(r.out.result);
 }
 
-NTSTATUS rpccli_wkssvc_NetWkstaTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t *level, union wkssvc_NetWkstaTransportCtr *ctr, uint32_t max_buffer, uint32_t **totalentries, uint32_t *resume_handle)
+NTSTATUS rpccli_wkssvc_NetWkstaTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t *level, union wkssvc_NetWkstaTransportCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle)
 {
        struct wkssvc_NetWkstaTransportEnum r;
        NTSTATUS status;
@@ -199,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 */
index ff556b62bf36fcef62abe92a89dfb5389b7ffe04..1cbe0dd23e53512c8af4f10cf6da43eb59d2c366 100644 (file)
@@ -3,10 +3,10 @@
 #define __CLI_WKSSVC__
 NTSTATUS rpccli_wkssvc_NetWkstaGetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t level, union wkssvc_NetWkstaInfo *info);
 NTSTATUS rpccli_wkssvc_NetWkstaSetInfo(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t level, union wkssvc_NetWkstaInfo *info, uint32_t *parm_error);
-NTSTATUS rpccli_wkssvc_NetWkstaEnumUsers(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t level, union WKS_USER_ENUM_UNION *users, uint32_t prefmaxlen, uint32_t **entriesread, uint32_t **totalentries, uint32_t *resumehandle);
+NTSTATUS rpccli_wkssvc_NetWkstaEnumUsers(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t level, union WKS_USER_ENUM_UNION *users, uint32_t prefmaxlen, uint32_t *entriesread, uint32_t *totalentries, uint32_t *resumehandle);
 NTSTATUS rpccli_WKSSVC_NETRWKSTAUSERGETINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_WKSSVC_NETRWKSTAUSERSETINFO(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
-NTSTATUS rpccli_wkssvc_NetWkstaTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t *level, union wkssvc_NetWkstaTransportCtr *ctr, uint32_t max_buffer, uint32_t **totalentries, uint32_t *resume_handle);
+NTSTATUS rpccli_wkssvc_NetWkstaTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_name, uint32_t *level, union wkssvc_NetWkstaTransportCtr *ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle);
 NTSTATUS rpccli_WKSSVC_NETRWKSTATRANSPORTADD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_WKSSVC_NETRWKSTATRANSPORTDEL(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
 NTSTATUS rpccli_WKSSVC_NETRUSEADD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx);
index c287495681eeab2aad54775dcac1b1a9e6a4718f..030074ab204b3e91dce5deec17bd5e4850309367 100644 (file)
@@ -1460,6 +1460,7 @@ _PUBLIC_ void ndr_print_winreg_EnumKey(struct ndr_print *ndr, const char *name,
 
 NTSTATUS ndr_push_winreg_EnumValue(struct ndr_push *ndr, int flags, const struct winreg_EnumValue *r)
 {
+       uint32_t cntr_data_1;
        if (flags & NDR_IN) {
                if (r->in.handle == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
                NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.handle));
@@ -1470,12 +1471,13 @@ NTSTATUS ndr_push_winreg_EnumValue(struct ndr_push *ndr, int flags, const struct
                if (r->in.type) {
                        NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->in.type));
                }
-               NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data));
-               if (r->in.data) {
-                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_size));
-                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.value_length));
-                       NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->in.data, *r->in.value_length));
+               if (r->in.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.data_size));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.value_length));
+               for (cntr_data_1 = 0; cntr_data_1 < *r->in.value_length; cntr_data_1++) {
+                       if (r->in.data[cntr_data_1] == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
+                       NDR_CHECK(ndr_push_ref_ptr(ndr));
                }
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.data_size));
                if (r->in.data_size) {
@@ -1493,12 +1495,13 @@ NTSTATUS ndr_push_winreg_EnumValue(struct ndr_push *ndr, int flags, const struct
                if (r->out.type) {
                        NDR_CHECK(ndr_push_winreg_Type(ndr, NDR_SCALARS, *r->out.type));
                }
-               NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data));
-               if (r->out.data) {
-                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_size));
-                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-                       NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.value_length));
-                       NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.data, *r->out.value_length));
+               if (r->out.data == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.data_size));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.value_length));
+               for (cntr_data_1 = 0; cntr_data_1 < *r->out.value_length; cntr_data_1++) {
+                       if (r->out.data[cntr_data_1] == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
+                       NDR_CHECK(ndr_push_ref_ptr(ndr));
                }
                NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.data_size));
                if (r->out.data_size) {
@@ -1517,12 +1520,14 @@ NTSTATUS ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int flags, struct winre
 {
        uint32_t _ptr_type;
        uint32_t _ptr_data;
+       uint32_t cntr_data_1;
        uint32_t _ptr_data_size;
        uint32_t _ptr_value_length;
        TALLOC_CTX *_mem_save_handle_0;
        TALLOC_CTX *_mem_save_name_0;
        TALLOC_CTX *_mem_save_type_0;
-       TALLOC_CTX *_mem_save_data_0;
+       TALLOC_CTX *_mem_save_data_1;
+       TALLOC_CTX *_mem_save_data_2;
        TALLOC_CTX *_mem_save_data_size_0;
        TALLOC_CTX *_mem_save_value_length_0;
        if (flags & NDR_IN) {
@@ -1555,24 +1560,24 @@ NTSTATUS ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int flags, struct winre
                        NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->in.type));
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
                }
-               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
-               if (_ptr_data) {
-                       NDR_PULL_ALLOC(ndr, r->in.data);
-               } else {
-                       r->in.data = NULL;
+               NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
+               NDR_CHECK(ndr_pull_array_length(ndr, &r->in.data));
+               if (ndr_get_array_length(ndr, &r->in.data) > ndr_get_array_size(ndr, &r->in.data)) {
+                       return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.data), ndr_get_array_length(ndr, &r->in.data));
                }
-               if (r->in.data) {
-                       _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
-                       NDR_PULL_SET_MEM_CTX(ndr, r->in.data, 0);
-                       NDR_CHECK(ndr_pull_array_size(ndr, &r->in.data));
-                       NDR_CHECK(ndr_pull_array_length(ndr, &r->in.data));
-                       if (ndr_get_array_length(ndr, &r->in.data) > ndr_get_array_size(ndr, &r->in.data)) {
-                               return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.data), ndr_get_array_length(ndr, &r->in.data));
-                       }
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
                        NDR_PULL_ALLOC_N(ndr, r->in.data, ndr_get_array_size(ndr, &r->in.data));
-                       NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->in.data, ndr_get_array_length(ndr, &r->in.data)));
-                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
                }
+               memcpy(r->out.data,r->in.data,ndr_get_array_size(ndr, &r->in.data) * sizeof(*r->in.data));
+               _mem_save_data_1 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->in.data, 0);
+               for (cntr_data_1 = 0; cntr_data_1 < *r->in.value_length; cntr_data_1++) {
+                       NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_data));
+                       if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                               NDR_PULL_ALLOC(ndr, r->in.data[cntr_data_1]);
+                       }
+               }
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_1, 0);
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_size));
                if (_ptr_data_size) {
                        NDR_PULL_ALLOC(ndr, r->in.data_size);
@@ -1599,6 +1604,9 @@ NTSTATUS ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int flags, struct winre
                }
                NDR_PULL_ALLOC(ndr, r->out.name);
                *r->out.name = *r->in.name;
+               if (r->in.data_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
+               NDR_PULL_ALLOC_N(ndr, r->out.data, *r->in.data_size);
+               memcpy(r->out.data, r->in.data, *r->in.data_size * sizeof(*r->in.data));
                if (r->in.data) {
                        if (r->in.data_size == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;
                        NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->in.data, *r->in.data_size));
@@ -1628,24 +1636,24 @@ NTSTATUS ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int flags, struct winre
                        NDR_CHECK(ndr_pull_winreg_Type(ndr, NDR_SCALARS, r->out.type));
                        NDR_PULL_SET_MEM_CTX(ndr, _mem_save_type_0, 0);
                }
-               NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data));
-               if (_ptr_data) {
-                       NDR_PULL_ALLOC(ndr, r->out.data);
-               } else {
-                       r->out.data = NULL;
+               NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
+               NDR_CHECK(ndr_pull_array_length(ndr, &r->out.data));
+               if (ndr_get_array_length(ndr, &r->out.data) > ndr_get_array_size(ndr, &r->out.data)) {
+                       return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.data), ndr_get_array_length(ndr, &r->out.data));
                }
-               if (r->out.data) {
-                       _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr);
-                       NDR_PULL_SET_MEM_CTX(ndr, r->out.data, 0);
-                       NDR_CHECK(ndr_pull_array_size(ndr, &r->out.data));
-                       NDR_CHECK(ndr_pull_array_length(ndr, &r->out.data));
-                       if (ndr_get_array_length(ndr, &r->out.data) > ndr_get_array_size(ndr, &r->out.data)) {
-                               return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.data), ndr_get_array_length(ndr, &r->out.data));
-                       }
+               if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
                        NDR_PULL_ALLOC_N(ndr, r->out.data, ndr_get_array_size(ndr, &r->out.data));
-                       NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.data, ndr_get_array_length(ndr, &r->out.data)));
-                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0);
                }
+               memcpy(r->out.data,r->in.data,ndr_get_array_size(ndr, &r->out.data) * sizeof(*r->in.data));
+               _mem_save_data_1 = NDR_PULL_GET_MEM_CTX(ndr);
+               NDR_PULL_SET_MEM_CTX(ndr, r->out.data, 0);
+               for (cntr_data_1 = 0; cntr_data_1 < *r->out.value_length; cntr_data_1++) {
+                       NDR_CHECK(ndr_pull_ref_ptr(ndr, &_ptr_data));
+                       if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+                               NDR_PULL_ALLOC(ndr, r->out.data[cntr_data_1]);
+                       }
+               }
+               NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_1, 0);
                NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data_size));
                if (_ptr_data_size) {
                        NDR_PULL_ALLOC(ndr, r->out.data_size);
@@ -1685,6 +1693,7 @@ NTSTATUS ndr_pull_winreg_EnumValue(struct ndr_pull *ndr, int flags, struct winre
 
 _PUBLIC_ void ndr_print_winreg_EnumValue(struct ndr_print *ndr, const char *name, int flags, const struct winreg_EnumValue *r)
 {
+       uint32_t cntr_data_1;
        ndr_print_struct(ndr, name, "winreg_EnumValue");
        ndr->depth++;
        if (flags & NDR_SET_VALUES) {
@@ -1710,11 +1719,22 @@ _PUBLIC_ void ndr_print_winreg_EnumValue(struct ndr_print *ndr, const char *name
                ndr->depth--;
                ndr_print_ptr(ndr, "data", r->in.data);
                ndr->depth++;
-               if (r->in.data) {
-                       if (r->in.value_length == NULL) return;
-                       ndr_print_array_uint8(ndr, "data", r->in.data, *r->in.value_length);
+               if (r->in.value_length == NULL) return;
+               ndr->print(ndr, "%s: ARRAY(%d)", "data", *r->in.value_length);
+               ndr->depth++;
+               for (cntr_data_1=0;cntr_data_1<*r->in.value_length;cntr_data_1++) {
+                       char *idx_1=NULL;
+                       asprintf(&idx_1, "[%d]", cntr_data_1);
+                       if (idx_1) {
+                               ndr_print_ptr(ndr, "data", r->in.data[cntr_data_1]);
+                               ndr->depth++;
+                               ndr_print_uint8(ndr, "data", *r->in.data[cntr_data_1]);
+                               ndr->depth--;
+                               free(idx_1);
+                       }
                }
                ndr->depth--;
+               ndr->depth--;
                ndr_print_ptr(ndr, "data_size", r->in.data_size);
                ndr->depth++;
                if (r->in.data_size) {
@@ -1744,11 +1764,22 @@ _PUBLIC_ void ndr_print_winreg_EnumValue(struct ndr_print *ndr, const char *name
                ndr->depth--;
                ndr_print_ptr(ndr, "data", r->out.data);
                ndr->depth++;
-               if (r->out.data) {
-                       if (r->out.value_length == NULL) return;
-                       ndr_print_array_uint8(ndr, "data", r->out.data, *r->out.value_length);
+               if (r->out.value_length == NULL) return;
+               ndr->print(ndr, "%s: ARRAY(%d)", "data", *r->out.value_length);
+               ndr->depth++;
+               for (cntr_data_1=0;cntr_data_1<*r->out.value_length;cntr_data_1++) {
+                       char *idx_1=NULL;
+                       asprintf(&idx_1, "[%d]", cntr_data_1);
+                       if (idx_1) {
+                               ndr_print_ptr(ndr, "data", r->out.data[cntr_data_1]);
+                               ndr->depth++;
+                               ndr_print_uint8(ndr, "data", *r->out.data[cntr_data_1]);
+                               ndr->depth--;
+                               free(idx_1);
+                       }
                }
                ndr->depth--;
+               ndr->depth--;
                ndr_print_ptr(ndr, "data_size", r->out.data_size);
                ndr->depth++;
                if (r->out.data_size) {
index dfa557f90c48c246530ae557dc60818119311a36..9b935631d4ac64ed3219a9160363d8d6e59884d6 100644 (file)
@@ -11,7 +11,7 @@ WERROR _winreg_CreateKey(pipes_struct *p, struct policy_handle *handle, struct w
 WERROR _winreg_DeleteKey(pipes_struct *p, struct policy_handle *handle, struct winreg_String key);
 WERROR _winreg_DeleteValue(pipes_struct *p, struct policy_handle *handle, struct winreg_String value);
 WERROR _winreg_EnumKey(pipes_struct *p, struct policy_handle *handle, uint32_t enum_index, struct winreg_StringBuf *name, struct winreg_StringBuf *keyclass, NTTIME *last_changed_time);
-WERROR _winreg_EnumValue(pipes_struct *p, struct policy_handle *handle, uint32_t enum_index, struct winreg_ValNameBuf *name, enum winreg_Type *type, uint8_t *data, uint32_t *data_size, uint32_t *value_length);
+WERROR _winreg_EnumValue(pipes_struct *p, struct policy_handle *handle, uint32_t enum_index, struct winreg_ValNameBuf *name, enum winreg_Type *type, uint8_t **data, uint32_t *data_size, uint32_t *value_length);
 WERROR _winreg_FlushKey(pipes_struct *p, struct policy_handle *handle);
 WERROR _winreg_GetKeySecurity(pipes_struct *p, struct policy_handle *handle, uint32_t sec_info, struct KeySecurityData *sd);
 WERROR _winreg_LoadKey(pipes_struct *p, struct policy_handle *handle, struct winreg_String *keyname, struct winreg_String *filename);
index 54ab5195d40134304090b93a8f5ae5a24a701970..967404dc1b5a18c113c1dcc9289fa2bfa6ff66b0 100644 (file)
@@ -227,7 +227,7 @@ struct winreg_EnumValue {
                uint32_t enum_index;
                struct winreg_ValNameBuf *name;/* [ref] */
                enum winreg_Type *type;/* [unique] */
-               uint8_t *data;/* [unique,length_is(*value_length),size_is(*data_size)] */
+               uint8_t **data;/* [ref,length_is(*value_length),size_is(*data_size)] */
                uint32_t *data_size;/* [unique] */
                uint32_t *value_length;/* [unique] */
        } in;
@@ -235,7 +235,7 @@ struct winreg_EnumValue {
        struct {
                struct winreg_ValNameBuf *name;/* [ref] */
                enum winreg_Type *type;/* [unique] */
-               uint8_t *data;/* [unique,length_is(*value_length),size_is(*data_size)] */
+               uint8_t **data;/* [ref,length_is(*value_length),size_is(*data_size)] */
                uint32_t *data_size;/* [unique] */
                uint32_t *value_length;/* [unique] */
                WERROR result;
index 93cd06fc18d359e6e09e19cb4fa7f50c6864e5ca..48bc565fff51212f686b386172c0a5fcb1ae9361 100644 (file)
@@ -30,7 +30,7 @@ import "security.idl";
        /* Function: 0x02 */
        NTSTATUS unixinfo_SidToGid (
            [in]        dom_sid sid,
-           [out,ref]   hyper *gid
+           [out]       hyper *gid
            );
 
        /******************/
index 6ec55cc6ede91ed4371f0e5b7feefb0dd5368805..c7efedde165c9aed27c311ba963f1f92833a93ec 100644 (file)
@@ -167,7 +167,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
                [in]            uint32 enum_index,
                [in,out,ref]    winreg_ValNameBuf *name,
                [in,out,unique] winreg_Type *type,
-               [in,out,unique,size_is(*data_size),length_is(*value_length)] uint8 *data,
+               [in,out,ref,size_is(*data_size),length_is(*value_length)] uint8 **data,
                [in,out,unique] uint32 *data_size,
                [in,out,unique] uint32 *value_length
        );
index d9a39b12494ed702a7c01507fc8d01ccaa1bd072..4778274ca9d55b729ed3fb80e6a0f5e2dc471f9e 100644 (file)
@@ -2477,7 +2477,6 @@ net_share_enum_rpc(struct cli_state *cli,
         int i;
        NTSTATUS result;
        uint32 enum_hnd;
-       uint32 *penum_hnd = &enum_hnd;
         uint32 info_level = 1;
        uint32 preferred_len = 0xffffffff;
        struct srvsvc_NetShareCtr1 ctr1;
@@ -2509,7 +2508,7 @@ net_share_enum_rpc(struct cli_state *cli,
        enum_hnd = 0;
        result = rpccli_srvsvc_NetShareEnum(pipe_hnd, mem_ctx, NULL,
                                            &info_level, &ctr, preferred_len,
-                                           &numentries, &penum_hnd);
+                                           &numentries, &enum_hnd);
 
         /* Was it successful? */
        if (!NT_STATUS_IS_OK(result) || numentries == 0) {
index 1738aafc4ee36a2880f2630b97d73c3da0762f0e..4006b375b51063033c5d9fc8c74803c1e8e19ce7 100644 (file)
@@ -430,7 +430,7 @@ WERROR _winreg_EnumKey(pipes_struct *p, struct policy_handle *handle, uint32_t e
 
 WERROR _winreg_EnumValue(pipes_struct *p, struct policy_handle *handle,
                         uint32_t enum_index, struct winreg_ValNameBuf *name,
-                        enum winreg_Type *type, uint8_t *data,
+                        enum winreg_Type *type, uint8_t **data,
                         uint32_t *data_size, uint32_t *value_length)
 {
        WERROR err;
index e9e26987e5a699fd656e77e9f40ced9ef083b14e..7e898ddc52a3d5b7acbe85654690911a809f2ed5 100644 (file)
@@ -174,7 +174,6 @@ static NTSTATUS cmd_dfs_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                              int argc, const char **argv)
 {
        struct dfs_EnumStruct str;
-       struct dfs_EnumStruct *pstr = &str;
        struct dfs_EnumArray1 info1;
        struct dfs_EnumArray2 info2;
        struct dfs_EnumArray3 info3;
@@ -184,7 +183,6 @@ static NTSTATUS cmd_dfs_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 
        NTSTATUS result;
        uint32 total = 0;
-       uint32 *ptotal = &total;
        uint32 unknown = 0;
 
        if (argc > 2) {
@@ -208,8 +206,8 @@ static NTSTATUS cmd_dfs_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                          break;
        }
 
-       result = rpccli_dfs_Enum(cli, mem_ctx, str.level, 0xFFFFFFFF, &pstr,
-                                &unknown, &ptotal);
+       result = rpccli_dfs_Enum(cli, mem_ctx, str.level, 0xFFFFFFFF, &str,
+                                &unknown, &total);
 
        if (NT_STATUS_IS_OK(result))
                display_dfs_enumstruct(&str);
@@ -223,7 +221,6 @@ static NTSTATUS cmd_dfs_enumex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
                               int argc, const char **argv)
 {
        struct dfs_EnumStruct str;
-       struct dfs_EnumStruct *pstr = &str;
        struct dfs_EnumArray1 info1;
        struct dfs_EnumArray2 info2;
        struct dfs_EnumArray3 info3;
@@ -233,7 +230,6 @@ static NTSTATUS cmd_dfs_enumex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 
        NTSTATUS result;
        uint32 total = 0;
-       uint32 *ptotal = &total;
 
        if (argc < 2 || argc > 3) {
                printf("Usage: %s dfs_name [info_level]\n", argv[0]);
@@ -256,7 +252,7 @@ static NTSTATUS cmd_dfs_enumex(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
        }
 
        result = rpccli_dfs_EnumEx(cli, mem_ctx, argv[1], str.level,
-                                  0xFFFFFFFF, &pstr, &ptotal);
+                                  0xFFFFFFFF, &str, &total);
 
        if (NT_STATUS_IS_OK(result))
                display_dfs_enumstruct(&str);
index b8058fa28a0794640238886faec3fd3faf0739c3..0a06a5c1664031a7e43cd417f627719ef2da67e2 100644 (file)
@@ -61,11 +61,12 @@ static NTSTATUS cmd_echo_data(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 
        size = atoi(argv[1]);
        in_data = (uint8 *)SMB_MALLOC(size);
+       out_data = (uint8 *)SMB_MALLOC(size);
 
        for (i = 0; i < size; i++)
                in_data[i] = i & 0xff;
 
-       result = rpccli_echo_EchoData(cli, mem_ctx, size, in_data, &out_data);
+       result = rpccli_echo_EchoData(cli, mem_ctx, size, in_data, out_data);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
@@ -100,7 +101,8 @@ static NTSTATUS cmd_echo_source_data(struct rpc_pipe_client *cli,
 
        size = atoi(argv[1]);
 
-       result = rpccli_echo_SourceData(cli, mem_ctx, size, &out_data);
+       out_data = SMB_MALLOC(size);
+       result = rpccli_echo_SourceData(cli, mem_ctx, size, out_data);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
index 1d1c2f78528f1a6926613a272751ffc167a0fe61..87b0fb3531621c739431ddd44cb61930aca26eb7 100644 (file)
@@ -249,7 +249,6 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli,
        union srvsvc_NetShareCtr ctr;
        NTSTATUS result;
        uint32 hnd;
-       uint32 *phnd = &hnd;
        uint32 preferred_len = 0xffffffff, i;
        uint32 numentries;
 
@@ -289,7 +288,7 @@ static NTSTATUS cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli,
 
        result = rpccli_srvsvc_NetShareEnum(
                cli, mem_ctx, cli->cli->desthost, &info_level, &ctr, preferred_len, &numentries, 
-               &phnd);
+               &hnd);
 
        if (!NT_STATUS_IS_OK(result) || !numentries)
                goto done;
@@ -367,7 +366,7 @@ static NTSTATUS cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli,
        uint32 info_level = 502;
        union srvsvc_NetShareInfo info_get;
        NTSTATUS result;
-       uint32 *parm_error = NULL;
+       uint32 parm_error = 0;
 
        if (argc > 3) {
                printf("Usage: %s [sharename] [comment]\n", argv[0]);
@@ -402,7 +401,7 @@ static NTSTATUS cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli,
 {
        fstring srv_name_slash;
        NTSTATUS result;
-       struct srvsvc_NetRemoteTODInfo *tod;
+       struct srvsvc_NetRemoteTODInfo tod;
 
        if (argc > 1) {
                printf("Usage: %s\n", argv[0]);
@@ -428,7 +427,6 @@ static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli,
        union srvsvc_NetFileCtr ctr;
        NTSTATUS result;
        uint32 hnd;
-       uint32 *phnd = &hnd;
        uint32 preferred_len = 0xffff;
        uint32 numentries;
 
@@ -445,7 +443,7 @@ static NTSTATUS cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli,
        ZERO_STRUCT(ctr);
 
        result = rpccli_srvsvc_NetFileEnum(
-               cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &phnd);
+               cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
index 2b8490706bf914ddd5d127ecf2903d771f9d16ce..1725ce8bfe772f79dc773aa8757d7fdbc9922148 100644 (file)
@@ -156,8 +156,14 @@ static NTSTATUS cmd_unixinfo_getpwuid(struct rpc_pipe_client *cli,
                uids[i] = atoi(argv[i+1]);
        }
 
+       info = TALLOC_ARRAY(mem_ctx, struct unixinfo_GetPWUidInfo, num_uids);
+       if (info == NULL) {
+               return NT_STATUS_NO_MEMORY;
+       }
+
+
        result = rpccli_unixinfo_GetPWUid(cli, mem_ctx, &num_uids, uids,
-                                         &info);
+                                         info);
 
        if (!NT_STATUS_IS_OK(result)) {
                return result;
index e29d0495d1bcfb5b661b7a3265089177461a29c0..29fba09eb726b035af07c7091fdf2329b3550c96 100644 (file)
@@ -3021,7 +3021,7 @@ static NTSTATUS rpc_share_add_internals(const DOM_SID *domain_sid,
        uint32 num_users=0, perms=0;
        char *password=NULL; /* don't allow a share password */
        uint32 level = 2;
-       uint32 *pparm_error = NULL;
+       uint32 parm_error;
        union srvsvc_NetShareInfo info;
        struct srvsvc_NetShareInfo2 info2;
 
@@ -3046,7 +3046,7 @@ static NTSTATUS rpc_share_add_internals(const DOM_SID *domain_sid,
        info2.name = sharename;
 
        result = rpccli_srvsvc_NetShareAdd(pipe_hnd, mem_ctx, NULL, level, 
-                                          info, &pparm_error);
+                                          info, &parm_error);
        return result;
 }
 
@@ -3158,11 +3158,10 @@ static NTSTATUS get_share_info(struct rpc_pipe_client *pipe_hnd,
        /* no specific share requested, enumerate all */
        if (argc == 0) {
                uint32 hnd = 0;
-               uint32 *phnd = &hnd;
 
                return rpccli_srvsvc_NetShareEnum(pipe_hnd, mem_ctx, NULL,
                                                  &level, ctr, 0xffffffff,
-                                                 numentries, &phnd);
+                                                 numentries, &hnd);
        }
 
        /* request just one share */
@@ -3330,7 +3329,7 @@ static NTSTATUS rpc_share_migrate_shares_internals(const DOM_SID *domain_sid,
 
 
        for (i = 0; i < numentries; i++) {
-               uint32 *pparm_error = NULL;
+               uint32 parm_error = 0;
                union srvsvc_NetShareInfo info;
 
                /* reset error-code */
@@ -3351,7 +3350,7 @@ static NTSTATUS rpc_share_migrate_shares_internals(const DOM_SID *domain_sid,
                info.info502 = &ctr_src.ctr502->array[i];
 
                result = rpccli_srvsvc_NetShareAdd(srvsvc_pipe, mem_ctx, NULL, 
-                                                  502, info, &pparm_error);
+                                                  502, info, &parm_error);
        
                 if (NT_STATUS_EQUAL(result, NT_STATUS_OBJECT_NAME_COLLISION)) {
                        printf("           [%s] does already exist\n", ctr_src.ctr502->array[i].name);
@@ -3726,7 +3725,7 @@ static NTSTATUS rpc_share_migrate_security_internals(const DOM_SID *domain_sid,
        struct cli_state *cli_dst = NULL;
        uint32 level = 502; /* includes secdesc */
        uint32 numentries;
-       uint32 *parm_error = NULL;
+       uint32 parm_error = 0;
 
        result = get_share_info(pipe_hnd, mem_ctx, level, argc, argv, &ctr_src,
                                                        &numentries);
@@ -4693,7 +4692,7 @@ static NTSTATUS rpc_sh_share_add(TALLOC_CTX *mem_ctx,
        union srvsvc_NetShareInfo info;
        struct srvsvc_NetShareInfo2 info2;
        NTSTATUS result;
-       uint32 *parm_error = NULL;
+       uint32 parm_error = 0;
 
        if ((argc < 2) || (argc > 3)) {
                d_fprintf(stderr, "usage: %s <share> <path> [comment]\n",
@@ -4875,7 +4874,6 @@ static NTSTATUS rpc_file_list_internals(const DOM_SID *domain_sid,
        union srvsvc_NetFileCtr ctr;
        NTSTATUS result;
        uint32 hnd;
-       uint32 *phnd = &hnd;
        uint32 preferred_len = 0xffffffff, i;
        const char *username=NULL;
        uint32 level = 3;
@@ -4889,7 +4887,7 @@ static NTSTATUS rpc_file_list_internals(const DOM_SID *domain_sid,
                
        result = rpccli_srvsvc_NetFileEnum(pipe_hnd, mem_ctx, NULL, NULL,
                                           username, &level, &ctr,
-                                          preferred_len, &numentries, &phnd);
+                                          preferred_len, &numentries, &hnd);
 
        if (!NT_STATUS_IS_OK(result))
                goto done;
index e63471f176ed47b38bdff5039093d94dcd2faded..0a3ceb2233cd0e5049d65b7ef208c07ad12d2dfe 100644 (file)
@@ -139,10 +139,8 @@ static NTSTATUS registry_enumkeys(TALLOC_CTX *ctx,
        for (i=0; i<num_subkeys; i++) {
                char c, n;
                struct winreg_StringBuf class_buf;
-               struct winreg_StringBuf *pclass_buf = &class_buf;
                struct winreg_StringBuf name_buf;
                NTTIME modtime;
-               NTTIME *pmodtime = &modtime;
 
                c = '\0';
                class_buf.name = &c;
@@ -155,8 +153,8 @@ static NTSTATUS registry_enumkeys(TALLOC_CTX *ctx,
                ZERO_STRUCT(modtime);
 
                status = rpccli_winreg_EnumKey(pipe_hnd, mem_ctx, key_hnd,
-                                              i, &name_buf, &pclass_buf,
-                                              &pmodtime);
+                                              i, &name_buf, &class_buf,
+                                              &modtime);
                
                if (W_ERROR_EQUAL(ntstatus_to_werror(status),
                                  WERR_NO_MORE_ITEMS) ) {
@@ -169,9 +167,8 @@ static NTSTATUS registry_enumkeys(TALLOC_CTX *ctx,
 
                classes[i] = NULL;
 
-               if (pclass_buf && pclass_buf->name &&
-                   (!(classes[i] = talloc_strdup(classes,
-                                                 pclass_buf->name)))) {
+               if (class_buf.name &&
+                   (!(classes[i] = talloc_strdup(classes, class_buf.name)))) {
                        status = NT_STATUS_NO_MEMORY;
                        goto error;
                }
@@ -181,9 +178,8 @@ static NTSTATUS registry_enumkeys(TALLOC_CTX *ctx,
                        goto error;
                }
 
-               if ((pmodtime) &&
-                   (!(modtimes[i] = (NTTIME *)talloc_memdup(
-                              modtimes, pmodtime, sizeof(*pmodtime))))) {
+               if ((!(modtimes[i] = (NTTIME *)talloc_memdup(
+                              modtimes, &modtime, sizeof(modtime))))) {
                        status = NT_STATUS_NO_MEMORY;
                        goto error;
                }
@@ -254,15 +250,9 @@ static NTSTATUS registry_enumvalues(TALLOC_CTX *ctx,
 
        for (i=0; i<num_values; i++) {
                enum winreg_Type type = REG_NONE;
-               enum winreg_Type *ptype = &type;
-               uint8 d = 0;
-               uint8 *data = &d;
-
+               uint8 *data = NULL;
                uint32 data_size;
-               uint32 *pdata_size = &data_size;
-
                uint32 value_length;
-               uint32 *pvalue_length = &value_length;
 
                char n;
                struct winreg_ValNameBuf name_buf;
@@ -276,9 +266,9 @@ static NTSTATUS registry_enumvalues(TALLOC_CTX *ctx,
                value_length = 0;
 
                status = rpccli_winreg_EnumValue(pipe_hnd, mem_ctx, key_hnd,
-                                                i, &name_buf, &ptype,
-                                                &data, &pdata_size,
-                                                &pvalue_length );
+                                                i, &name_buf, &type,
+                                                &data, &data_size,
+                                                &value_length );
 
                if ( W_ERROR_EQUAL(ntstatus_to_werror(status),
                                   WERR_NO_MORE_ITEMS) ) {
@@ -290,9 +280,7 @@ static NTSTATUS registry_enumvalues(TALLOC_CTX *ctx,
                        goto error;
                }
 
-               if ((name_buf.name == NULL) || (ptype == NULL) ||
-                   (data == NULL) || (pdata_size == 0) ||
-                   (pvalue_length == NULL)) {
+               if (name_buf.name == NULL) {
                        status = NT_STATUS_INVALID_PARAMETER;
                        goto error;
                }
@@ -302,8 +290,8 @@ static NTSTATUS registry_enumvalues(TALLOC_CTX *ctx,
                        goto error;
                }
 
-               err = registry_pull_value(values, &values[i], *ptype, data,
-                                         *pdata_size, *pvalue_length);
+               err = registry_pull_value(values, &values[i], type, data,
+                                         data_size, value_length);
                if (!W_ERROR_IS_OK(err)) {
                        status = werror_to_ntstatus(err);
                        goto error;
@@ -477,7 +465,6 @@ static NTSTATUS rpc_registry_createkey_internal(const DOM_SID *domain_sid,
        struct policy_handle hive_hnd, key_hnd;
        struct winreg_String key, keyclass;
        enum winreg_CreateAction action;
-       enum winreg_CreateAction *paction = &action;
        NTSTATUS status;
 
        if (!reg_hive_key(argv[0], &hive, &key.name)) {
@@ -496,7 +483,7 @@ static NTSTATUS rpc_registry_createkey_internal(const DOM_SID *domain_sid,
 
        status = rpccli_winreg_CreateKey(pipe_hnd, mem_ctx, &hive_hnd, key,
                                         keyclass, 0, REG_KEY_READ, NULL,
-                                        &key_hnd, &paction);
+                                        &key_hnd, &action);
        if (!NT_STATUS_IS_OK(status)) {
                d_fprintf(stderr, "createkey returned %s\n",
                          nt_errstr(status));
@@ -504,8 +491,7 @@ static NTSTATUS rpc_registry_createkey_internal(const DOM_SID *domain_sid,
                return status;
        }
 
-       if (paction) {
-               switch (*paction) {
+       switch (action) {
                case REG_ACTION_NONE:
                        d_printf("createkey did nothing -- huh?\n");
                        break;
@@ -515,7 +501,6 @@ static NTSTATUS rpc_registry_createkey_internal(const DOM_SID *domain_sid,
                case REG_OPENED_EXISTING_KEY:
                        d_printf("createkey opened existing %s\n", argv[0]);
                        break;
-               }
        }
 
        rpccli_winreg_CloseKey(pipe_hnd, mem_ctx, &key_hnd);
index e993e5dc41956cb05868dc5ede926c1858b42836..31ed7635654640b2b9ff5eae8cb5bf61c1406de5 100644 (file)
@@ -135,7 +135,6 @@ static BOOL get_rpc_shares(struct cli_state *cli,
        struct rpc_pipe_client *pipe_hnd;
        TALLOC_CTX *mem_ctx;
        uint32 enum_hnd;
-       uint32 *penum_hnd = &enum_hnd;
        struct srvsvc_NetShareCtr1 ctr1;
        union srvsvc_NetShareCtr ctr;
        uint32 numentries;
@@ -165,7 +164,7 @@ static BOOL get_rpc_shares(struct cli_state *cli,
        status = rpccli_srvsvc_NetShareEnum(pipe_hnd, mem_ctx, NULL,
                                            &info_level, &ctr,
                                            0xffffffff, &numentries,
-                                           &penum_hnd);
+                                           &enum_hnd);
 
        if (!NT_STATUS_IS_OK(status)) {
                TALLOC_FREE(mem_ctx);