s3:libsmb: let the callers only pass the password string to cli_session_setup[_send]()
authorStefan Metzmacher <metze@samba.org>
Tue, 25 Oct 2016 09:31:07 +0000 (11:31 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Tue, 15 Nov 2016 10:00:26 +0000 (11:00 +0100)
There're no callers which tried to pass raw {lm,nt}_response any more.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
12 files changed:
source3/client/client.c
source3/client/smbspool.c
source3/libsmb/cliconnect.c
source3/libsmb/clidfs.c
source3/libsmb/libsmb_server.c
source3/libsmb/passchange.c
source3/libsmb/proto.h
source3/nmbd/nmbd_synclists.c
source3/torture/masktest.c
source3/torture/test_smb2.c
source3/torture/torture.c
source3/winbindd/winbindd_cm.c

index b7991e42002b095623f9e11599598946327355db..fbb24590a98d7cf6823b42d2dbbd6854d8bfff2c 100644 (file)
@@ -4575,8 +4575,7 @@ static int cmd_logon(void)
        }
 
        nt_status = cli_session_setup(cli, l_username,
-                                     l_password, strlen(l_password),
-                                     l_password, strlen(l_password),
+                                     l_password,
                                      lp_workgroup());
        if (!NT_STATUS_IS_OK(nt_status)) {
                d_printf("session setup failed: %s\n", nt_errstr(nt_status));
index 9dbb23327432cdd3f805e8945de272f797691185..1e68f090eb86d9d0bbacfb22a51ed36840a2a7f9 100644 (file)
@@ -425,8 +425,7 @@ smb_complete_connection(const char *myname,
        }
 
        nt_status = cli_session_setup(cli, username,
-                                     password, strlen(password) + 1,
-                                     password, strlen(password) + 1,
+                                     password,
                                      workgroup);
        if (!NT_STATUS_IS_OK(nt_status)) {
                fprintf(stderr, "ERROR: Session setup failed: %s\n", nt_errstr(nt_status));
index e15f6768937b7f7a7acd51ef1eb1d76aee3929bc..57e51b3c2e3a5237da9ef9914bf134c8ed9197ed 100644 (file)
@@ -2010,8 +2010,7 @@ struct tevent_req *cli_session_setup_send(TALLOC_CTX *mem_ctx,
                                          struct tevent_context *ev,
                                          struct cli_state *cli,
                                          const char *user,
-                                         const char *pass, int passlen,
-                                         const char *ntpass, int ntpasslen,
+                                         const char *pass,
                                          const char *workgroup)
 {
        struct tevent_req *req, *subreq;
@@ -2019,6 +2018,18 @@ struct tevent_req *cli_session_setup_send(TALLOC_CTX *mem_ctx,
        char *p;
        char *user2;
        uint16_t sec_mode = smb1cli_conn_server_security_mode(cli->conn);
+       int passlen = 0;
+
+       if (pass != NULL) {
+               passlen = strlen(pass);
+               if (passlen > 0) {
+                       /*
+                        * If we have a realm password
+                        * we include the terminating '\0'
+                        */
+                       passlen += 1;
+               }
+       }
 
        req = tevent_req_create(mem_ctx, &state,
                                struct cli_session_setup_state);
@@ -2178,7 +2189,7 @@ struct tevent_req *cli_session_setup_send(TALLOC_CTX *mem_ctx,
                }
 
                subreq = cli_session_setup_nt1_send(
-                       state, ev, cli, user, pass, passlen, ntpass, ntpasslen,
+                       state, ev, cli, user, pass, passlen, pass, passlen,
                        workgroup);
                if (tevent_req_nomem(subreq, req)) {
                        return tevent_req_post(req, ev);
@@ -2277,8 +2288,7 @@ NTSTATUS cli_session_setup_recv(struct tevent_req *req)
 
 NTSTATUS cli_session_setup(struct cli_state *cli,
                           const char *user,
-                          const char *pass, int passlen,
-                          const char *ntpass, int ntpasslen,
+                          const char *pass,
                           const char *workgroup)
 {
        struct tevent_context *ev;
@@ -2292,8 +2302,7 @@ NTSTATUS cli_session_setup(struct cli_state *cli,
        if (ev == NULL) {
                goto fail;
        }
-       req = cli_session_setup_send(ev, ev, cli, user, pass, passlen,
-                                    ntpass, ntpasslen, workgroup);
+       req = cli_session_setup_send(ev, ev, cli, user, pass, workgroup);
        if (req == NULL) {
                goto fail;
        }
@@ -3437,8 +3446,7 @@ static void cli_full_connection_started(struct tevent_req *subreq)
        }
        subreq = cli_session_setup_send(
                state, state->ev, state->cli, state->user,
-               state->password, state->pw_len, state->password, state->pw_len,
-               state->domain);
+               state->password, state->domain);
        if (tevent_req_nomem(subreq, req)) {
                return;
        }
@@ -3462,7 +3470,7 @@ static void cli_full_connection_sess_set_up(struct tevent_req *subreq)
                state->flags &= ~CLI_FULL_CONNECTION_ANONYMOUS_FALLBACK;
 
                subreq = cli_session_setup_send(
-                       state, state->ev, state->cli, "", "", 0, "", 0,
+                       state, state->ev, state->cli, "", "",
                        state->domain);
                if (tevent_req_nomem(subreq, req)) {
                        return;
index d2a4c194f44986782c34de18ba334619df80f330..b8b55167b79303a7dda1c5338b2e8648c0e61cdd 100644 (file)
@@ -196,17 +196,14 @@ static NTSTATUS do_connect(TALLOC_CTX *ctx,
        }
 
        status = cli_session_setup(c, username,
-                                  password, strlen(password),
-                                  password, strlen(password),
+                                  password,
                                   domain);
        if (!NT_STATUS_IS_OK(status)) {
                /* If a password was not supplied then
                 * try again with a null username. */
                if (password[0] || !username[0] ||
                        get_cmdline_auth_info_use_kerberos(auth_info) ||
-                       !NT_STATUS_IS_OK(status = cli_session_setup(c, "",
-                                               "", 0,
-                                               "", 0,
+                       !NT_STATUS_IS_OK(status = cli_session_setup(c, "", "",
                                               lp_workgroup()))) {
                        d_printf("session setup failed: %s\n",
                                 nt_errstr(status));
index eb4d5d2963fb599a0bde523f217d75871043b6bc..591d646a1381c1be3b82cdf984da40a232d4efbc 100644 (file)
@@ -274,7 +274,8 @@ SMBC_server_internal(TALLOC_CTX *ctx,
        const char *server_n = server;
         int is_ipc = (share != NULL && strcmp(share, "IPC$") == 0);
        uint32_t fs_attrs = 0;
-        const char *username_used;
+       const char *username_used = NULL;
+       const char *password_used = NULL;
        NTSTATUS status;
        char *newserver, *newshare;
        int flags = 0;
@@ -491,22 +492,20 @@ SMBC_server_internal(TALLOC_CTX *ctx,
                smb2cli_conn_set_max_credits(c->conn, DEFAULT_SMB2_MAX_CREDITS);
        }
 
-        username_used = *pp_username;
+       username_used = *pp_username;
+       password_used = *pp_password;
 
        if (!NT_STATUS_IS_OK(cli_session_setup(c, username_used,
-                                              *pp_password,
-                                               strlen(*pp_password),
-                                              *pp_password,
-                                               strlen(*pp_password),
+                                              password_used,
                                               *pp_workgroup))) {
 
                 /* Failed.  Try an anonymous login, if allowed by flags. */
-                username_used = "";
+               username_used = "";
+               password_used = "";
 
                 if (smbc_getOptionNoAutoAnonymousLogin(context) ||
-                    !NT_STATUS_IS_OK(cli_session_setup(c, username_used,
-                                                       *pp_password, 1,
-                                                       *pp_password, 0,
+                   !NT_STATUS_IS_OK(cli_session_setup(c, username_used,
+                                                      password_used,
                                                        *pp_workgroup))) {
 
                         cli_shutdown(c);
@@ -593,7 +592,7 @@ SMBC_server_internal(TALLOC_CTX *ctx,
                /* Attempt UNIX smb encryption. */
                if (!NT_STATUS_IS_OK(cli_force_encryption(c,
                                                           username_used,
-                                                          *pp_password,
+                                                          password_used,
                                                           *pp_workgroup))) {
 
                        /*
index 49b9ad60964ffe6d38e65e10f098c22c9e098caa..a7ae8d311fa10a0cc4c62698edb12d096260c674 100644 (file)
@@ -84,8 +84,7 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam
        /* Given things like SMB signing, restrict anonymous and the like, 
           try an authenticated connection first */
        result = cli_session_setup(cli, user_name,
-                                  old_passwd, strlen(old_passwd)+1,
-                                  old_passwd, strlen(old_passwd)+1, "");
+                                  old_passwd, "");
 
        if (!NT_STATUS_IS_OK(result)) {
 
@@ -112,7 +111,7 @@ NTSTATUS remote_password_change(const char *remote_machine, const char *user_nam
                 * Thanks to <Nicholas.S.Jenkins@cdc.com> for this fix.
                 */
 
-               result = cli_session_setup(cli, "", "", 0, "", 0, "");
+               result = cli_session_setup(cli, "", "", "");
 
                if (!NT_STATUS_IS_OK(result)) {
                        if (asprintf(err_str, "machine %s rejected the session "
index 6da95d3c1cfc1fe54bb6dc6fee9495f5ca0ce840..34c77b66c3ed20baff13b12a5a73197f2e833c1f 100644 (file)
@@ -37,14 +37,12 @@ struct tevent_req *cli_session_setup_send(TALLOC_CTX *mem_ctx,
                                          struct tevent_context *ev,
                                          struct cli_state *cli,
                                          const char *user,
-                                         const char *pass, int passlen,
-                                         const char *ntpass, int ntpasslen,
+                                         const char *pass,
                                          const char *workgroup);
 NTSTATUS cli_session_setup_recv(struct tevent_req *req);
 NTSTATUS cli_session_setup(struct cli_state *cli,
                           const char *user,
-                          const char *pass, int passlen,
-                          const char *ntpass, int ntpasslen,
+                          const char *pass,
                           const char *workgroup);
 struct tevent_req *cli_session_setup_guest_create(TALLOC_CTX *mem_ctx,
                                                  struct tevent_context *ev,
index 0135afc2f0a584952f3cffb985d610e93c659b89..bba1bc1ebec096f865dd425fe0ceae7eff8cfd2c 100644 (file)
@@ -95,7 +95,7 @@ static void sync_child(char *name, int nm_type,
                return;
        }
 
-       if (!NT_STATUS_IS_OK(cli_session_setup(cli, "", "", 1, "", 0,
+       if (!NT_STATUS_IS_OK(cli_session_setup(cli, "", "",
                                               workgroup))) {
                cli_shutdown(cli);
                return;
index c5af18fe1e981ddbd88742fd44a5d1be96d7ae5f..5402663024469455242c7a11e30eaa7a8aab9869 100644 (file)
@@ -208,8 +208,7 @@ static struct cli_state *connect_one(char *share)
        }
 
        status = cli_session_setup(c, username,
-                                  password, strlen(password),
-                                  password, strlen(password),
+                                  password,
                                   lp_workgroup());
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0, ("session setup failed: %s\n", nt_errstr(status)));
index 6871f4c22721d1243eaa168852a184637bfd5857..02b29cad81d541c2b2d9091e4a171b9ed27d19ac 100644 (file)
@@ -58,8 +58,7 @@ bool run_smb2_basic(int dummy)
        }
 
        status = cli_session_setup(cli, username,
-                                  password, strlen(password),
-                                  password, strlen(password),
+                                  password,
                                   workgroup);
        if (!NT_STATUS_IS_OK(status)) {
                printf("cli_session_setup returned %s\n", nt_errstr(status));
@@ -333,8 +332,7 @@ bool run_smb2_session_reconnect(int dummy)
        }
 
        status = cli_session_setup(cli1, username,
-                                  password, strlen(password),
-                                  password, strlen(password),
+                                  password,
                                   workgroup);
        if (!NT_STATUS_IS_OK(status)) {
                printf("cli_session_setup returned %s\n", nt_errstr(status));
@@ -755,8 +753,7 @@ bool run_smb2_tcon_dependence(int dummy)
        }
 
        status = cli_session_setup(cli, username,
-                                  password, strlen(password),
-                                  password, strlen(password),
+                                  password,
                                   workgroup);
        if (!NT_STATUS_IS_OK(status)) {
                printf("cli_session_setup returned %s\n", nt_errstr(status));
@@ -910,8 +907,7 @@ bool run_smb2_multi_channel(int dummy)
        }
 
        status = cli_session_setup(cli1, username,
-                                  password, strlen(password),
-                                  password, strlen(password),
+                                  password,
                                   workgroup);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_sesssetup returned %s\n", nt_errstr(status));
@@ -1503,8 +1499,7 @@ bool run_smb2_session_reauth(int dummy)
        }
 
        status = cli_session_setup(cli, username,
-                                  password, strlen(password),
-                                  password, strlen(password),
+                                  password,
                                   workgroup);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_sesssetup returned %s\n", nt_errstr(status));
index 797f3bef5c609bd525cecf4e66b733ee6ca70039..29d91fa75aa65f58d75b18426f8561fc18b8f545 100644 (file)
@@ -413,14 +413,12 @@ bool torture_init_connection(struct cli_state **pcli)
 bool torture_cli_session_setup2(struct cli_state *cli, uint16_t *new_vuid)
 {
        uint16_t old_vuid = cli_state_get_uid(cli);
-       size_t passlen = strlen(password);
        NTSTATUS status;
        bool ret;
 
        cli_state_set_uid(cli, 0);
        status = cli_session_setup(cli, username,
-                                  password, passlen,
-                                  password, passlen,
+                                  password,
                                   workgroup);
        ret = NT_STATUS_IS_OK(status);
        *new_vuid = cli_state_get_uid(cli);
@@ -7115,7 +7113,7 @@ static bool run_error_map_extract(int dummy) {
                return False;
        }
 
-       status = cli_session_setup(c_nt, "", "", 0, "", 0, workgroup);
+       status = cli_session_setup(c_nt, "", "", workgroup);
        if (!NT_STATUS_IS_OK(status)) {
                printf("%s rejected the NT-error initial session setup (%s)\n",host, nt_errstr(status));
                return False;
@@ -7142,7 +7140,7 @@ static bool run_error_map_extract(int dummy) {
                return False;
        }
 
-       status = cli_session_setup(c_dos, "", "", 0, "", 0, workgroup);
+       status = cli_session_setup(c_dos, "", "", workgroup);
        if (!NT_STATUS_IS_OK(status)) {
                printf("%s rejected the DOS-error initial session setup (%s)\n",
                        host, nt_errstr(status));
@@ -7156,8 +7154,7 @@ static bool run_error_map_extract(int dummy) {
                fstr_sprintf(user, "%X", error);
 
                status = cli_session_setup(c_nt, user,
-                                          password, strlen(password),
-                                          password, strlen(password),
+                                          password,
                                           workgroup);
                if (NT_STATUS_IS_OK(status)) {
                        printf("/** Session setup succeeded.  This shouldn't happen...*/\n");
@@ -7173,8 +7170,7 @@ static bool run_error_map_extract(int dummy) {
                }
 
                status = cli_session_setup(c_dos, user,
-                                          password, strlen(password),
-                                          password, strlen(password),
+                                          password,
                                           workgroup);
                if (NT_STATUS_IS_OK(status)) {
                        printf("/** Session setup succeeded.  This shouldn't happen...*/\n");
@@ -7227,8 +7223,7 @@ static bool run_sesssetup_bench(int dummy)
        for (i=0; i<torture_numops; i++) {
                status = cli_session_setup(
                        c, username,
-                       password, strlen(password),
-                       password, strlen(password),
+                       password,
                        workgroup);
                if (!NT_STATUS_IS_OK(status)) {
                        d_printf("(%s) cli_session_setup failed: %s\n",
@@ -8168,9 +8163,6 @@ static bool run_large_readx(int dummy)
                status = cli_session_setup(cli2,
                                        username,
                                        password,
-                                       strlen(password)+1,
-                                       password,
-                                       strlen(password)+1,
                                        workgroup);
                if (!NT_STATUS_IS_OK(status)) {
                        goto out;
index 94c5124ad97c998f8c4a3e4badaaa2184a61007f..85c26d0a59220c3ba35ddf329c941af06524951e 100644 (file)
@@ -1129,9 +1129,6 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain,
                result = cli_session_setup(*cli,
                                           machine_krb5_principal,
                                           machine_password,
-                                          strlen(machine_password)+1,
-                                          machine_password,
-                                          strlen(machine_password)+1,
                                           machine_domain);
 
                if (NT_STATUS_IS_OK(result)) {
@@ -1153,9 +1150,6 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain,
                result = cli_session_setup(*cli,
                                           machine_account,
                                           machine_password,
-                                          strlen(machine_password)+1,
-                                          machine_password,
-                                          strlen(machine_password)+1,
                                           machine_domain);
        }
 
@@ -1219,9 +1213,6 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain,
        result = cli_session_setup(*cli,
                                   machine_account,
                                   machine_password,
-                                  strlen(machine_password)+1,
-                                  machine_password,
-                                  strlen(machine_password)+1,
                                   machine_domain);
 
        if (NT_STATUS_IS_OK(result)) {
@@ -1260,7 +1251,7 @@ static NTSTATUS cm_prepare_connection(struct winbindd_domain *domain,
 
        (*cli)->use_kerberos = False;
 
-       result = cli_session_setup(*cli, "", "", 0, "", 0, "");
+       result = cli_session_setup(*cli, "", "", "");
        if (NT_STATUS_IS_OK(result)) {
                DEBUG(5, ("Connected anonymously\n"));
                goto session_setup_done;