libsmbclient: Factor out cli_session_setup_get_account
authorVolker Lendecke <vl@samba.org>
Sat, 9 Mar 2013 08:53:42 +0000 (09:53 +0100)
committerJeremy Allison <jra@samba.org>
Thu, 11 Apr 2013 21:25:49 +0000 (14:25 -0700)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/libsmb/cliconnect.c

index 253cc70154eb5bcb8b556a430a415bcee31b06df..212cc3e0a7ad65d5eb7938cc2e7bfe4e94e0b39f 100644 (file)
@@ -1902,6 +1902,22 @@ static char *cli_session_setup_get_principal(
 }
 #endif
 
+static char *cli_session_setup_get_account(TALLOC_CTX *mem_ctx,
+                                          const char *principal)
+{
+       char *account, *p;
+
+       account = talloc_strdup(mem_ctx, principal);
+       if (account == NULL) {
+               return NULL;
+       }
+       p = strchr_m(account, '@');
+       if (p != NULL) {
+               *p = '\0';
+       }
+       return account;
+}
+
 /****************************************************************************
  Do a spnego encrypted session setup.
 
@@ -1919,7 +1935,6 @@ static ADS_STATUS cli_session_setup_spnego(struct cli_state *cli,
        char *OIDs[ASN1_MAX_OIDS];
        int i;
        const DATA_BLOB *server_blob;
-       char *p;
        char *account = NULL;
        NTSTATUS status;
 
@@ -2012,18 +2027,11 @@ static ADS_STATUS cli_session_setup_spnego(struct cli_state *cli,
 
 ntlmssp:
 
-       account = talloc_strdup(talloc_tos(), user);
+       account = cli_session_setup_get_account(talloc_tos(), user);
        if (!account) {
                return ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
        }
 
-       /* when falling back to ntlmssp while authenticating with a machine
-        * account strip off the realm - gd */
-
-       if ((p = strchr_m(account, '@')) != NULL) {
-               *p = '\0';
-       }
-
        status = cli_session_setup_ntlmssp(cli, account, pass, user_domain);
        TALLOC_FREE(account);
        return ADS_ERROR_NT(status);