summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/libsmb/cliconnect.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index 545a02bef6..5449fcf312 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -2679,7 +2679,6 @@ static void cli_negprot_done(struct tevent_req *subreq)
/* this time arrives in real GMT */
ts = interpret_long_date(((char *)(vwv+11))+1);
cli->servertime = ts.tv_sec;
- cli->secblob = data_blob(bytes, num_bytes);
server_capabilities = IVAL(vwv + 9, 1);
if (server_capabilities & CAP_RAW_MODE) {
server_readbraw = true;
@@ -2688,15 +2687,19 @@ static void cli_negprot_done(struct tevent_req *subreq)
if (server_capabilities & CAP_LOCK_AND_READ) {
server_lockread = true;
}
- /* work out if they sent us a workgroup */
- if (!(server_capabilities & CAP_EXTENDED_SECURITY) &&
- smb_buflen(inbuf) > 8) {
- ssize_t ret;
- status = smb_bytes_talloc_string(
- cli, (char *)inbuf, &cli->server_domain,
- bytes + 8, num_bytes - 8, &ret);
- if (tevent_req_nterror(req, status)) {
- return;
+ if (server_capabilities & CAP_EXTENDED_SECURITY) {
+ cli->secblob = data_blob(bytes, num_bytes);
+ } else {
+ cli->secblob = data_blob(bytes, num_bytes);
+ /* work out if they sent us a workgroup */
+ if (num_bytes > 8) {
+ ssize_t ret;
+ status = smb_bytes_talloc_string(
+ cli, (char *)inbuf, &cli->server_domain,
+ bytes + 8, num_bytes - 8, &ret);
+ if (tevent_req_nterror(req, status)) {
+ return;
+ }
}
}