]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:smbspool: avoid using CLI_FULL_CONNECTION_{USE,FALLBACK_AFTER}_KERBEROS flags
authorStefan Metzmacher <metze@samba.org>
Mon, 11 Nov 2019 16:47:42 +0000 (17:47 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Thu, 28 May 2020 06:43:39 +0000 (06:43 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/client/smbspool.c

index e8be739f5cd498f9deaf1e1d821f4b167da2c100..f56dc323b6ef9e07737ba174acb03b76cb07c755 100644 (file)
 static int      get_exit_code(NTSTATUS nt_status);
 static void     list_devices(void);
 static NTSTATUS
-smb_complete_connection(struct cli_state **output_cli,
-                       const char *myname,
-                       const char *server,
-                       int port,
-                       const char *username,
-                       const char *password,
-                       const char *workgroup,
-                       const char *share,
-                       int flags);
-static NTSTATUS
 smb_connect(struct cli_state **output_cli,
            const char *workgroup,
            const char *server,
@@ -546,30 +536,21 @@ smb_complete_connection(struct cli_state **output_cli,
                        const char *password,
                        const char *workgroup,
                        const char *share,
-                       int flags)
+                       bool use_kerberos,
+                       bool fallback_after_kerberos)
 {
        struct cli_state *cli;  /* New connection */
        NTSTATUS        nt_status;
        struct cli_credentials *creds = NULL;
-       bool use_kerberos = false;
-       bool fallback_after_kerberos = false;
 
        /* Start the SMB connection */
        nt_status = cli_start_connection(&cli, myname, server, NULL, port,
-                                        SMB_SIGNING_DEFAULT, flags);
+                                        SMB_SIGNING_DEFAULT, 0);
        if (!NT_STATUS_IS_OK(nt_status)) {
                fprintf(stderr, "ERROR: Connection failed: %s\n", nt_errstr(nt_status));
                return nt_status;
        }
 
-       if (flags & CLI_FULL_CONNECTION_USE_KERBEROS) {
-               use_kerberos = true;
-       }
-
-       if (flags & CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS) {
-               fallback_after_kerberos = true;
-       }
-
        creds = cli_session_creds_init(cli,
                                       username,
                                       workgroup,
@@ -694,8 +675,8 @@ smb_connect(struct cli_state **output_cli,
        struct cli_state *cli = NULL;   /* New connection */
        char           *myname = NULL;  /* Client name */
        struct passwd  *pwd;
-       int flags = CLI_FULL_CONNECTION_USE_KERBEROS;
        bool use_kerberos = false;
+       bool fallback_after_kerberos = false;
        const char *user = username;
        NTSTATUS nt_status;
 
@@ -726,7 +707,7 @@ smb_connect(struct cli_state **output_cli,
                }
 
                /* Fallback to NTLM */
-               flags |= CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS;
+               fallback_after_kerberos = true;
 
                fprintf(stderr,
                        "DEBUG: Try to connect using username/password ...\n");
@@ -734,7 +715,7 @@ smb_connect(struct cli_state **output_cli,
                goto anonymous;
        } else if (strcmp(auth_info_required, "samba") == 0) {
                if (username != NULL) {
-                       flags |= CLI_FULL_CONNECTION_FALLBACK_AFTER_KERBEROS;
+                       fallback_after_kerberos = true;
                } else if (kerberos_ccache_is_valid()) {
                        auth_info_required = "negotiate";
 
@@ -757,7 +738,8 @@ smb_connect(struct cli_state **output_cli,
                                            password,
                                            workgroup,
                                            share,
-                                           flags);
+                                           true, /* try kerberos */
+                                           fallback_after_kerberos);
        if (NT_STATUS_IS_OK(nt_status)) {
                fprintf(stderr, "DEBUG: SMB connection established.\n");
 
@@ -784,7 +766,7 @@ smb_connect(struct cli_state **output_cli,
                                            "",
                                            workgroup,
                                            share,
-                                           0);
+                                           false, false);
        if (NT_STATUS_IS_OK(nt_status)) {
                fputs("DEBUG: Connected with NTLMSSP...\n", stderr);
 
@@ -805,7 +787,7 @@ anonymous:
                                            "",
                                            workgroup,
                                            share,
-                                           0);
+                                           false, false);
        if (NT_STATUS_IS_OK(nt_status)) {
                *output_cli = cli;
                return NT_STATUS_OK;