Use rpc_pipe_client->user_name instead of rpc_pipe_client->cli->user_name
authorVolker Lendecke <vl@samba.org>
Sat, 19 Apr 2008 22:01:52 +0000 (00:01 +0200)
committerVolker Lendecke <vl@samba.org>
Sat, 19 Apr 2008 22:14:40 +0000 (00:14 +0200)
Also make sure that rpc_pipe_client->user_name is always talloced.

source/libads/ldap_printer.c
source/rpc_client/cli_pipe.c
source/utils/net_rpc_printer.c

index 440f979781ecd5b04c257371f1b38308da510803..6682ec24d08d3e9c991e8e8de520f38612005955 100644 (file)
@@ -296,7 +296,7 @@ WERROR get_remote_printer_publishing_data(struct rpc_pipe_client *cli,
        
        result = rpccli_spoolss_open_printer_ex(cli, mem_ctx, printername, 
                                             "", MAXIMUM_ALLOWED_ACCESS, 
-                                            servername, cli->cli->user_name, &pol);
+                                            servername, cli->user_name, &pol);
        if (!W_ERROR_IS_OK(result)) {
                DEBUG(3, ("Unable to open printer %s, error is %s.\n",
                          printername, dos_errstr(result)));
index 64fcc16bde38d469143653d499c50892ec2c77ed..bc9a4268d0fa8156ea0af1bcd6a8f0f2640e81be 100644 (file)
@@ -2275,6 +2275,15 @@ struct rpc_pipe_client *cli_rpc_pipe_open_noauth(struct cli_state *cli, int pipe
                return NULL;
        }
 
+       result->domain = talloc_strdup(result, cli->domain);
+       result->user_name = talloc_strdup(result, cli->user_name);
+
+       if ((result->domain == NULL) || (result->user_name == NULL)) {
+               *perr = NT_STATUS_NO_MEMORY;
+               cli_rpc_pipe_close(result);
+               return NULL;
+       }
+
        *perr = rpc_pipe_bind(result, PIPE_AUTH_TYPE_NONE, PIPE_AUTH_LEVEL_NONE);
        if (!NT_STATUS_IS_OK(*perr)) {
                int lvl = 0;
@@ -2330,8 +2339,14 @@ static struct rpc_pipe_client *cli_rpc_pipe_open_ntlmssp_internal(struct cli_sta
        
        result->auth.cli_auth_data_free_func = cli_ntlmssp_auth_free;
 
-       result->domain = domain;
-       result->user_name = username;
+       result->domain = talloc_strdup(result, domain);
+       result->user_name = talloc_strdup(result, username);
+
+       if ((result->domain == NULL) || (result->user_name == NULL)) {
+               *perr = NT_STATUS_NO_MEMORY;
+               goto err;
+       }
+
        pwd_set_cleartext(&result->pwd, password);
 
        *perr = ntlmssp_client_start(&ntlmssp_state);
index 80140792a3ba0246232643808d98e935eb214387..9dc409123e7fd22b1d862008d4da91179aeaad42 100644 (file)
@@ -994,7 +994,7 @@ static bool get_printer_info(struct rpc_pipe_client *pipe_hnd,
 
        /* argument given, get a single printer by name */
        if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, argv[0],
-                       MAXIMUM_ALLOWED_ACCESS, pipe_hnd->cli->user_name, &hnd)) 
+                       MAXIMUM_ALLOWED_ACCESS, pipe_hnd->user_name, &hnd))
                return False;
 
        if (!net_spoolss_getprinter(pipe_hnd, mem_ctx, &hnd, level, ctr)) {
@@ -1190,7 +1190,7 @@ static NTSTATUS rpc_printer_publish_internals_args(struct rpc_pipe_client *pipe_
 
                /* open printer handle */
                if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-                       PRINTER_ALL_ACCESS, pipe_hnd->cli->user_name, &hnd)) 
+                       PRINTER_ALL_ACCESS, pipe_hnd->user_name, &hnd))
                        goto done;
 
                got_hnd = True;
@@ -1838,7 +1838,7 @@ NTSTATUS rpc_printer_migrate_drivers_internals(const DOM_SID *domain_sid,
 
                /* open src printer handle */
                if (!net_spoolss_open_printer_ex(pipe_hnd, mem_ctx, sharename,
-                       MAXIMUM_ALLOWED_ACCESS, pipe_hnd->cli->user_name, &hnd_src)) 
+                       MAXIMUM_ALLOWED_ACCESS, pipe_hnd->user_name, &hnd_src))
                        goto done;
 
                got_hnd_src = True;