Refactoring: Make get_schannel_session_key_auth_ntlmssp return NTSTATUS
authorVolker Lendecke <vl@samba.org>
Sun, 20 Jul 2008 14:36:55 +0000 (16:36 +0200)
committerVolker Lendecke <vl@samba.org>
Sun, 20 Jul 2008 15:37:12 +0000 (17:37 +0200)
(This used to be commit ab3d80d476d8264030fa71d974324c6dcf6fe6e1)

source3/rpc_client/cli_pipe.c

index 6d15771d738925ea0e457958110d0786b45b058f..1825174803c84933675425d314c2e27a43bfe46f 100644 (file)
@@ -3292,32 +3292,32 @@ struct rpc_pipe_client *cli_rpc_pipe_open_schannel_with_key(struct cli_state *cl
  version uses an ntlmssp auth bound netlogon pipe to get the key.
  ****************************************************************************/
 
-static struct rpc_pipe_client *get_schannel_session_key_auth_ntlmssp(struct cli_state *cli,
-                                                       const char *domain,
-                                                       const char *username,
-                                                       const char *password,
-                                                       uint32 *pneg_flags,
-                                                       NTSTATUS *perr)
+static NTSTATUS get_schannel_session_key_auth_ntlmssp(struct cli_state *cli,
+                                                     const char *domain,
+                                                     const char *username,
+                                                     const char *password,
+                                                     uint32 *pneg_flags,
+                                                     struct rpc_pipe_client **presult)
 {
        struct rpc_pipe_client *netlogon_pipe = NULL;
+       NTSTATUS status;
 
-       *perr = cli_rpc_pipe_open_spnego_ntlmssp(cli,
-                                                &ndr_table_netlogon.syntax_id,
-                                                PIPE_AUTH_LEVEL_PRIVACY,
-                                                domain, username, password,
-                                                &netlogon_pipe);
-       if (!netlogon_pipe) {
-               return NULL;
+       status = cli_rpc_pipe_open_spnego_ntlmssp(
+               cli, &ndr_table_netlogon.syntax_id, PIPE_AUTH_LEVEL_PRIVACY,
+               domain, username, password, &netlogon_pipe);
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
        }
 
-       *perr = get_schannel_session_key_common(netlogon_pipe, cli, domain,
-                                               pneg_flags);
-       if (!NT_STATUS_IS_OK(*perr)) {
+       status = get_schannel_session_key_common(netlogon_pipe, cli, domain,
+                                                pneg_flags);
+       if (!NT_STATUS_IS_OK(status)) {
                TALLOC_FREE(netlogon_pipe);
-               return NULL;
+               return status;
        }
 
-       return netlogon_pipe;
+       *presult = netlogon_pipe;
+       return NT_STATUS_OK;
 }
 
 /****************************************************************************
@@ -3338,9 +3338,9 @@ struct rpc_pipe_client *cli_rpc_pipe_open_ntlmssp_auth_schannel(struct cli_state
        struct rpc_pipe_client *netlogon_pipe = NULL;
        struct rpc_pipe_client *result = NULL;
 
-       netlogon_pipe = get_schannel_session_key_auth_ntlmssp(cli, domain, username,
-                                                       password, &neg_flags, perr);
-       if (!netlogon_pipe) {
+       *perr = get_schannel_session_key_auth_ntlmssp(
+               cli, domain, username, password, &neg_flags, &netlogon_pipe);
+       if (!NT_STATUS_IS_OK(*perr)) {
                DEBUG(0,("cli_rpc_pipe_open_ntlmssp_auth_schannel: failed to get schannel session "
                        "key from server %s for domain %s.\n",
                        cli->desthost, domain ));