diff options
author | Stefan Metzmacher <metze@samba.org> | 2016-11-03 14:50:28 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2016-12-21 18:35:12 +0100 |
commit | 19bbd37b8df6315efc09b8e4007f4c4ddc155244 (patch) | |
tree | 93fde74506ab7013877889adf9cfd5f6f0054e9d /source3/client/client.c | |
parent | 791847f90ce0c0fc42c75ec6283906a0c5f5b926 (diff) | |
download | samba-19bbd37b8df6315efc09b8e4007f4c4ddc155244.tar.gz |
s3:client: make use of cli_smb1_setup_encryption() in cmd_posix_encrypt()
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source3/client/client.c')
-rw-r--r-- | source3/client/client.c | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/source3/client/client.c b/source3/client/client.c index cde9776db9a..226eb277573 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -2535,35 +2535,53 @@ static int cmd_posix_encrypt(void) { TALLOC_CTX *ctx = talloc_tos(); NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + char *domain = NULL; + char *user = NULL; + char *password = NULL; + struct cli_credentials *creds = NULL; + struct cli_credentials *lcreds = NULL; - if (cli->use_kerberos) { - status = cli_gss_smb_encryption_start(cli); - } else { - char *domain = NULL; - char *user = NULL; - char *password = NULL; + if (next_token_talloc(ctx, &cmd_ptr, &domain, NULL)) { - if (!next_token_talloc(ctx, &cmd_ptr,&domain,NULL)) { + if (!next_token_talloc(ctx, &cmd_ptr, &user, NULL)) { d_printf("posix_encrypt domain user password\n"); return 1; } - if (!next_token_talloc(ctx, &cmd_ptr,&user,NULL)) { + if (!next_token_talloc(ctx, &cmd_ptr, &password, NULL)) { d_printf("posix_encrypt domain user password\n"); return 1; } - if (!next_token_talloc(ctx, &cmd_ptr,&password,NULL)) { + lcreds = cli_session_creds_init(ctx, + user, + domain, + NULL, /* realm */ + password, + false, /* use_kerberos */ + false, /* fallback_after_kerberos */ + false, /* use_ccache */ + false); /* password_is_nt_hash */ + if (lcreds == NULL) { + d_printf("cli_session_creds_init() failed.\n"); + return -1; + } + creds = lcreds; + } else { + bool auth_requested = false; + + creds = get_cmdline_auth_info_creds(auth_info); + + auth_requested = cli_credentials_authentication_requested(creds); + if (!auth_requested) { d_printf("posix_encrypt domain user password\n"); return 1; } - - status = cli_raw_ntlm_smb_encryption_start(cli, - user, - password, - domain); } + status = cli_smb1_setup_encryption(cli, creds); + /* gensec currently references the creds so we can't free them here */ + talloc_unlink(ctx, lcreds); if (!NT_STATUS_IS_OK(status)) { d_printf("posix_encrypt failed with error %s\n", nt_errstr(status)); } else { |