Kill fstring in getdcname & getanydcname return.
authorGünther Deschner <gd@samba.org>
Fri, 21 Dec 2007 14:12:40 +0000 (15:12 +0100)
committerGünther Deschner <gd@samba.org>
Fri, 21 Dec 2007 14:12:40 +0000 (15:12 +0100)
Guenther
(This used to be commit b7383818168863a7ba43c2456f8c44e96e76707a)

source3/rpc_client/cli_netlogon.c
source3/rpcclient/cmd_netlogon.c
source3/winbindd/winbindd_cm.c
source3/winbindd/winbindd_misc.c

index 3cb5827e73d126bd75edd0c2343434fc952c61ec..26d2124da035e0f69159ac59a38ce8b294eb627e 100644 (file)
@@ -383,7 +383,7 @@ NTSTATUS rpccli_netlogon_logon_ctrl2(struct rpc_pipe_client *cli, TALLOC_CTX *me
 
 WERROR rpccli_netlogon_getanydcname(struct rpc_pipe_client *cli,
                                    TALLOC_CTX *mem_ctx, const char *mydcname,
-                                   const char *domainname, fstring newdcname)
+                                   const char *domainname, char **newdcname)
 {
        prs_struct qbuf, rbuf;
        NET_Q_GETANYDCNAME q;
@@ -410,8 +410,9 @@ WERROR rpccli_netlogon_getanydcname(struct rpc_pipe_client *cli,
 
        result = r.status;
 
-       if (W_ERROR_IS_OK(result)) {
-               rpcstr_pull_unistr2_fstring(newdcname, &r.uni_dcname);
+       if (W_ERROR_IS_OK(result) && newdcname) {
+               *newdcname = rpcstr_pull_unistr2_talloc(mem_ctx, &r.uni_dcname);
+               W_ERROR_HAVE_NO_MEMORY(*newdcname);
        }
 
        return result;
@@ -421,7 +422,7 @@ WERROR rpccli_netlogon_getanydcname(struct rpc_pipe_client *cli,
 
 WERROR rpccli_netlogon_getdcname(struct rpc_pipe_client *cli,
                                 TALLOC_CTX *mem_ctx, const char *mydcname,
-                                const char *domainname, fstring newdcname)
+                                const char *domainname, char **newdcname)
 {
        prs_struct qbuf, rbuf;
        NET_Q_GETDCNAME q;
@@ -448,8 +449,9 @@ WERROR rpccli_netlogon_getdcname(struct rpc_pipe_client *cli,
 
        result = r.status;
 
-       if (W_ERROR_IS_OK(result)) {
-               rpcstr_pull_unistr2_fstring(newdcname, &r.uni_dcname);
+       if (W_ERROR_IS_OK(result) && newdcname) {
+               *newdcname = rpcstr_pull_unistr2_talloc(mem_ctx, &r.uni_dcname);
+               W_ERROR_HAVE_NO_MEMORY(*newdcname);
        }
 
        return result;
index e997bb5090536444c31fd908c3cc8a5a47629f48..2c1f7e0f11a1e4f1aa835aeab8ed036cb8132f64 100644 (file)
@@ -48,7 +48,7 @@ static WERROR cmd_netlogon_getanydcname(struct rpc_pipe_client *cli,
                                        TALLOC_CTX *mem_ctx, int argc, 
                                        const char **argv)
 {
-       fstring dcname;
+       char *dcname = NULL;
        WERROR result = WERR_GENERAL_FAILURE;
        int old_timeout;
 
@@ -60,7 +60,7 @@ static WERROR cmd_netlogon_getanydcname(struct rpc_pipe_client *cli,
        /* Make sure to wait for our DC's reply */
        old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
 
-       result = rpccli_netlogon_getanydcname(cli, mem_ctx, cli->cli->desthost, argv[1], dcname);
+       result = rpccli_netlogon_getanydcname(cli, mem_ctx, cli->cli->desthost, argv[1], &dcname);
 
        cli_set_timeout(cli->cli, old_timeout);
 
@@ -79,7 +79,7 @@ static WERROR cmd_netlogon_getdcname(struct rpc_pipe_client *cli,
                                     TALLOC_CTX *mem_ctx, int argc, 
                                     const char **argv)
 {
-       fstring dcname;
+       char *dcname = NULL;
        WERROR result = WERR_GENERAL_FAILURE;
        int old_timeout;
 
@@ -91,7 +91,7 @@ static WERROR cmd_netlogon_getdcname(struct rpc_pipe_client *cli,
        /* Make sure to wait for our DC's reply */
        old_timeout = cli_set_timeout(cli->cli, MAX(cli->cli->timeout,30000)); /* 30 seconds. */
 
-       result = rpccli_netlogon_getdcname(cli, mem_ctx, cli->cli->desthost, argv[1], dcname);
+       result = rpccli_netlogon_getdcname(cli, mem_ctx, cli->cli->desthost, argv[1], &dcname);
 
        cli_set_timeout(cli->cli, old_timeout);
 
index 8ea815535fb5c8e7a2cfb23f7dba18419ab86404..7fb42a6dcac74be4d24b3c3912165b7e89bef118 100644 (file)
@@ -570,7 +570,7 @@ static bool get_dc_name_via_netlogon(const struct winbindd_domain *domain,
        WERROR werr;
        TALLOC_CTX *mem_ctx;
        unsigned int orig_timeout;
-       fstring tmp;
+       char *tmp = NULL;
        char *p;
 
        /* Hmmmm. We can only open one connection to the NETLOGON pipe at the
@@ -602,7 +602,7 @@ static bool get_dc_name_via_netlogon(const struct winbindd_domain *domain,
        orig_timeout = cli_set_timeout(netlogon_pipe->cli, 35000);
        
        werr = rpccli_netlogon_getanydcname(netlogon_pipe, mem_ctx, our_domain->dcname,
-                                           domain->name, tmp);
+                                           domain->name, &tmp);
 
        /* And restore our original timeout. */
        cli_set_timeout(netlogon_pipe->cli, orig_timeout);
index 8c3ef5bb6f522ae8230c5b3c491f7632117e5b2e..76f2554122b476482e8c80a4d49af7b9a0db0fbb 100644 (file)
@@ -231,7 +231,7 @@ void winbindd_getdcname(struct winbindd_cli_state *state)
 enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain,
                                             struct winbindd_cli_state *state)
 {
-       fstring dcname_slash;
+       char *dcname_slash = NULL;
        char *p;
        struct rpc_pipe_client *netlogon_pipe;
        NTSTATUS result;
@@ -262,12 +262,12 @@ enum winbindd_result winbindd_dual_getdcname(struct winbindd_domain *domain,
                werr = rpccli_netlogon_getdcname(netlogon_pipe, state->mem_ctx,
                                                 domain->dcname,
                                                 state->request.domain_name,
-                                                dcname_slash);
+                                                &dcname_slash);
        } else {
                werr = rpccli_netlogon_getanydcname(netlogon_pipe, state->mem_ctx,
                                                    domain->dcname,
                                                    state->request.domain_name,
-                                                   dcname_slash);
+                                                   &dcname_slash);
        }
        /* And restore our original timeout. */
        cli_set_timeout(netlogon_pipe->cli, orig_timeout);