diff options
author | Andrew Tridgell <tridge@samba.org> | 2005-11-11 09:11:51 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:46:11 -0500 |
commit | 3e54c36fa459ec6f5e721b90ce4e4c1d0e31d85c (patch) | |
tree | 4b531427bf84558e179c4345d0968b08072c2814 /source4/libcli/smb2/request.c | |
parent | 6c4be5073de177668d8c8fc05de625d3c9125268 (diff) | |
download | samba-3e54c36fa459ec6f5e721b90ce4e4c1d0e31d85c.tar.gz samba-3e54c36fa459ec6f5e721b90ce4e4c1d0e31d85c.tar.bz2 samba-3e54c36fa459ec6f5e721b90ce4e4c1d0e31d85c.zip |
r11674: SMB2 tree connect now works. We do 2 session setups and 2 tree
connects, giving the following output:
Running SMB2-CONNECT
Negprot reply:
current_time = Fri Nov 11 20:10:42 2005 EST
boot_time = Sat Nov 12 10:34:33 2005 EST
Session setup gave UID 0x40000000071
Session setup gave UID 0x140000000075
Tree connect gave tid = 0x7500000001
Tree connect gave tid = 0x7500000005
SMB2-CONNECT took 0.049024 secs
(This used to be commit a24a4c311005dec4c5638e9c7c10e5e2f9872f4d)
Diffstat (limited to 'source4/libcli/smb2/request.c')
-rw-r--r-- | source4/libcli/smb2/request.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/source4/libcli/smb2/request.c b/source4/libcli/smb2/request.c index 28e7018ecc..deadd1794f 100644 --- a/source4/libcli/smb2/request.c +++ b/source4/libcli/smb2/request.c @@ -204,3 +204,40 @@ NTSTATUS smb2_push_ofs_blob(struct smb2_request *req, uint8_t *ptr, DATA_BLOB bl memcpy(ptr+4, blob.data, blob.length); return NT_STATUS_OK; } + +/* + pull a string in a ofs/length/blob format +*/ +NTSTATUS smb2_pull_ofs_string(struct smb2_request *req, uint8_t *ptr, + const char **str) +{ + DATA_BLOB blob; + NTSTATUS status; + ssize_t size; + void *vstr; + status = smb2_pull_ofs_blob(req, ptr, &blob); + NT_STATUS_NOT_OK_RETURN(status); + size = convert_string_talloc(req, CH_UTF16, CH_UNIX, + blob.data, blob.length, &vstr); + data_blob_free(&blob); + (*str) = vstr; + if (size == -1) { + return NT_STATUS_ILLEGAL_CHARACTER; + } + return NT_STATUS_OK; +} + +/* + create a UTF16 string in a blob from a char* +*/ +NTSTATUS smb2_string_blob(TALLOC_CTX *mem_ctx, const char *str, DATA_BLOB *blob) +{ + ssize_t size; + size = convert_string_talloc(mem_ctx, CH_UNIX, CH_UTF16, + str, strlen(str), (void **)&blob->data); + if (size == -1) { + return NT_STATUS_ILLEGAL_CHARACTER; + } + blob->length = size; + return NT_STATUS_OK; +} |