summaryrefslogtreecommitdiff
path: root/source4/libcli/smb2
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2012-02-22 15:29:26 +0100
committerMichael Adam <obnox@samba.org>2012-02-23 03:23:57 +0100
commitfe24ab4e53cde22e6b72d6073592cd3e31dc97f0 (patch)
treeb703f32d74f97e4fc076c2f24651a4bb4664a9a3 /source4/libcli/smb2
parent0c733221cf122d1bf304d74904b1329b2a6b7fb5 (diff)
downloadsamba-fe24ab4e53cde22e6b72d6073592cd3e31dc97f0.tar.gz
samba-fe24ab4e53cde22e6b72d6073592cd3e31dc97f0.tar.bz2
samba-fe24ab4e53cde22e6b72d6073592cd3e31dc97f0.zip
s4:smbcli:smb2: add a random GUID to the transport connection in smb2_transport_init()
This GUID is used in the smb2 negprot when max protocol is bigger than 0x0202. According to section 2.2.3 of the MS-SMB2 document, the Client GUID filed in the SMB2 negotiate request must be filled with a (non-zero) GUID if there are other dialects than 0x0202 in the dialects field. http://msdn.microsoft.com/en-us/library/cc246543%28v=prot.13%29.aspx Apart from corresponding to the docs, this change makes some of our durable-open tests (e.g reopen2 and open-oplock) _not_ hang when running against windows 8 preview (which might be still buggy). Pair-Programmed-With: Gregor Beck <gbeck@sernet.de> Autobuild-User: Michael Adam <obnox@samba.org> Autobuild-Date: Thu Feb 23 03:23:57 CET 2012 on sn-devel-104
Diffstat (limited to 'source4/libcli/smb2')
-rw-r--r--source4/libcli/smb2/transport.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/source4/libcli/smb2/transport.c b/source4/libcli/smb2/transport.c
index 59d49f7845..14d1fc541e 100644
--- a/source4/libcli/smb2/transport.c
+++ b/source4/libcli/smb2/transport.c
@@ -30,6 +30,7 @@
#include "lib/stream/packet.h"
#include "../lib/util/dlinklist.h"
#include "../libcli/smb/smbXcli_base.h"
+#include "librpc/ndr/libndr.h"
/*
destroy a transport
@@ -48,6 +49,7 @@ struct smb2_transport *smb2_transport_init(struct smbcli_socket *sock,
struct smbcli_options *options)
{
struct smb2_transport *transport;
+ struct GUID client_guid;
transport = talloc_zero(parent_ctx, struct smb2_transport);
if (!transport) return NULL;
@@ -58,12 +60,14 @@ struct smb2_transport *smb2_transport_init(struct smbcli_socket *sock,
TALLOC_FREE(sock->event.fde);
TALLOC_FREE(sock->event.te);
+ client_guid = GUID_random();
+
transport->conn = smbXcli_conn_create(transport,
sock->sock->fd,
sock->hostname,
options->signing,
0, /* smb1_capabilities */
- NULL); /* client_guid */
+ &client_guid);
if (transport->conn == NULL) {
talloc_free(transport);
return NULL;