summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/client/client.c43
-rw-r--r--source3/libsmb/clifsinfo.c7
-rw-r--r--source3/smbd/trans2.c4
3 files changed, 49 insertions, 5 deletions
diff --git a/source3/client/client.c b/source3/client/client.c
index 8e35cfbf0f..38023abec2 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -1787,6 +1787,48 @@ static int cmd_open(void)
/****************************************************************************
****************************************************************************/
+static int cmd_posix_encrypt(void)
+{
+ fstring buf;
+ fstring domain;
+ fstring user;
+ fstring password;
+ NTSTATUS status;
+
+ if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) {
+ d_printf("posix_encrypt domain user password\n");
+ return 1;
+ }
+ fstrcat(domain,buf);
+ if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) {
+ d_printf("posix_encrypt domain user password\n");
+ return 1;
+ }
+ fstrcat(user,buf);
+
+ if (!next_token_nr(NULL,buf,NULL,sizeof(buf))) {
+ d_printf("posix_encrypt domain user password\n");
+ return 1;
+ }
+ fstrcat(password,buf);
+
+ status = cli_raw_ntlm_smb_encryption_start(cli,
+ user,
+ password,
+ domain);
+
+ if (!NT_STATUS_IS_OK(status)) {
+ d_printf("posix_encrypt failed with error %s\n", nt_errstr(status));
+ } else {
+ d_printf("encryption on\n");
+ }
+
+ return 0;
+}
+
+/****************************************************************************
+****************************************************************************/
+
static int cmd_posix_open(void)
{
pstring mask;
@@ -3227,6 +3269,7 @@ static struct
{"newer",cmd_newer,"<file> only mget files newer than the specified local file",{COMPL_LOCAL,COMPL_NONE}},
{"open",cmd_open,"<mask> open a file",{COMPL_REMOTE,COMPL_NONE}},
{"posix", cmd_posix, "turn on all POSIX capabilities", {COMPL_REMOTE,COMPL_NONE}},
+ {"posix_encrypt",cmd_posix_encrypt,"<domain> <user> <password> start up transport encryption",{COMPL_REMOTE,COMPL_NONE}},
{"posix_open",cmd_posix_open,"<name> 0<mode> open_flags mode open a file using POSIX interface",{COMPL_REMOTE,COMPL_NONE}},
{"posix_mkdir",cmd_posix_mkdir,"<name> 0<mode> creates a directory using POSIX interface",{COMPL_REMOTE,COMPL_NONE}},
{"posix_rmdir",cmd_posix_rmdir,"<name> removes a directory using POSIX interface",{COMPL_REMOTE,COMPL_NONE}},
diff --git a/source3/libsmb/clifsinfo.c b/source3/libsmb/clifsinfo.c
index 52e12a38e3..0bd1e124ea 100644
--- a/source3/libsmb/clifsinfo.c
+++ b/source3/libsmb/clifsinfo.c
@@ -310,20 +310,21 @@ cleanup:
static NTSTATUS enc_blob_send_receive(struct cli_state *cli, DATA_BLOB *in, DATA_BLOB *out)
{
uint16 setup;
- char param[2];
+ char param[4];
char *rparam=NULL, *rdata=NULL;
unsigned int rparam_count=0, rdata_count=0;
NTSTATUS status = NT_STATUS_OK;
setup = TRANSACT2_SETFSINFO;
- SSVAL(param,0,SMB_REQUEST_TRANSPORT_ENCRYPTION);
+ SSVAL(param,0,0);
+ SSVAL(param,2,SMB_REQUEST_TRANSPORT_ENCRYPTION);
if (!cli_send_trans(cli, SMBtrans2,
NULL,
0, 0,
&setup, 1, 0,
- param, 2, 0,
+ param, 4, 0,
(char *)in->data, in->length, CLI_BUFFER_SIZE)) {
status = cli_nt_error(cli);
goto out;
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 158642a588..1c1606fd67 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -2769,7 +2769,7 @@ cap_low = 0x%x, cap_high = 0x%x\n",
DEBUG( 4,("call_trans2setfsinfo: request transport encrption.\n"));
- status = srv_request_encryption_setup((unsigned char **)&pdata, &data_len);
+ status = srv_request_encryption_setup((unsigned char **)ppdata, &data_len);
if (NT_STATUS_EQUAL(status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
error_packet_set(outbuf, 0, 0, status, __LINE__,__FILE__);
@@ -2777,7 +2777,7 @@ cap_low = 0x%x, cap_high = 0x%x\n",
return ERROR_NT(status);
}
- send_trans2_replies( outbuf, bufsize, params, 0, pdata, data_len, max_data_bytes);
+ send_trans2_replies( outbuf, bufsize, params, 0, *ppdata, data_len, max_data_bytes);
if (NT_STATUS_IS_OK(status)) {
/* Server-side transport encryption is now *on*. */