[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Tue Nov 12 22:19:02 UTC 2019


The branch, master has been updated
       via  a0aaf5c3345 lib: Remove unused file_id_string()
       via  fea35840b05 smbd: Use file_id_str_buf() in share_mode_cleanup_disconnected()
       via  6fe211c85d9 smbd: Use file_id_str_buf() in share_mode_memcache_fetch()
       via  0d246a156da smbd: Use file_id_str_buf() in share_mode_memcache_store()
       via  c229c0508bc lib: Remove unused file_id_string_tos()
       via  64349ce7176 torture3: Use file_id_str_buf() in print_brl()
       via  79291056c5b smbd: Use file_id_str_buf() in linux_release_kernel_oplock()
       via  f7dc0334810 smbd: Use file_id_str_buf() in linux_oplock_signal_handler()
       via  b0a486fabef smbd: Use file_id_str_buf() in scavenger_add_timer()
       via  0dd11a83dc2 smbd: Use file_id_str_buf() in file_find_dif()
       via  420cb1778d8 smbd: Use file_id_str_buf() in scavenger_timer()
       via  215e7f1fe41 smbd: Use file_id_str_buf() in scavenger_schedule_disconnected()
       via  1f5ea9d1d52 s3: smbd: smb2 cleanup - restructure smbd_smb2_request_pending_timer() encrypt code to look the same as smbd_smb2_request_reply().
       via  c133a1fd676 s3: smbd: smb2 cleanup - remove variable tf_len - this is a constant SMB2_TF_HDR_SIZE.
       via  eae1a45d09e s3: smbd: SMB2 - Ensure we use the correct session_id if encrypting an interim response.
      from  30e8f513a8b Detect when command line max protocol < min protocol

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a0aaf5c3345239959221d6c2e9cd949b8ccdf233
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 21:13:52 2019 +0100

    lib: Remove unused file_id_string()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Nov 12 22:18:40 UTC 2019 on sn-devel-184

commit fea35840b0504ac2fc8a3d85cb044f3d9fb345dd
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 21:11:38 2019 +0100

    smbd: Use file_id_str_buf() in share_mode_cleanup_disconnected()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 6fe211c85d93910960438c48b86614baac7db7de
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 21:08:15 2019 +0100

    smbd: Use file_id_str_buf() in share_mode_memcache_fetch()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 0d246a156da8047b86a8cfab00f5760a840eec60
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 21:05:41 2019 +0100

    smbd: Use file_id_str_buf() in share_mode_memcache_store()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit c229c0508bc64bb6e2d8d29be7a7bde58d86c86e
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 21:01:12 2019 +0100

    lib: Remove unused file_id_string_tos()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 64349ce7176c7079ffaace037c1a58a0f24abf29
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 20:58:26 2019 +0100

    torture3: Use file_id_str_buf() in print_brl()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 79291056c5b550c0afa8e4089758ad5e44e15cf0
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 20:57:14 2019 +0100

    smbd: Use file_id_str_buf() in linux_release_kernel_oplock()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit f7dc0334810723de5321f021e2d2be9d85a73939
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 20:55:29 2019 +0100

    smbd: Use file_id_str_buf() in linux_oplock_signal_handler()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit b0a486fabefaabd63cd2838e503360c0865e21dc
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 18:53:19 2019 +0100

    smbd: Use file_id_str_buf() in scavenger_add_timer()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 0dd11a83dc2d4487315f6654f57e7a43ba6ef98e
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 18:32:07 2019 +0100

    smbd: Use file_id_str_buf() in file_find_dif()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 420cb1778d8bb7233465459f269002b254049def
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 18:30:37 2019 +0100

    smbd: Use file_id_str_buf() in scavenger_timer()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 215e7f1fe414c38bbde1c896c16ab21f98943ef1
Author: Volker Lendecke <vl at samba.org>
Date:   Sat Nov 9 18:27:30 2019 +0100

    smbd: Use file_id_str_buf() in scavenger_schedule_disconnected()
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 1f5ea9d1d523cdf40c6b2c370abc7f9fa335f5cf
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Nov 7 09:16:44 2019 -0800

    s3: smbd: smb2 cleanup - restructure smbd_smb2_request_pending_timer() encrypt code to look the same as smbd_smb2_request_reply().
    
    This makes code changes in both (if needed) much easier
    to spot.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit c133a1fd6765908e49e2b1808818b515c987ab72
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Nov 7 09:13:12 2019 -0800

    s3: smbd: smb2 cleanup - remove variable tf_len - this is a constant SMB2_TF_HDR_SIZE.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit eae1a45d09ef54dd6b59803eedca672ae9433902
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Nov 7 12:02:13 2019 -0800

    s3: smbd: SMB2 - Ensure we use the correct session_id if encrypting an interim response.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14189
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/file_id.c             | 19 -------------------
 source3/lib/file_id.h             |  5 -----
 source3/locking/share_mode_lock.c | 30 ++++++++++++++++--------------
 source3/smbd/files.c              |  3 ++-
 source3/smbd/oplock_linux.c       | 21 +++++++++++++--------
 source3/smbd/scavenger.c          | 34 +++++++++++++++++++---------------
 source3/smbd/smb2_server.c        | 23 +++++++++++------------
 source3/torture/locktest2.c       |  5 ++++-
 8 files changed, 65 insertions(+), 75 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/file_id.c b/source3/lib/file_id.c
index 49e5c50385f..0cc5a56bc27 100644
--- a/source3/lib/file_id.c
+++ b/source3/lib/file_id.c
@@ -31,14 +31,6 @@ bool file_id_equal(const struct file_id *id1, const struct file_id *id2)
 	    id1->extid == id2->extid;
 }
 
-/*
-  a static-like (on talloc_tos()) string for a file_id structure
- */
-const char *file_id_string_tos(const struct file_id *id)
-{
-	return file_id_string(talloc_tos(), id);
-}
-
 char *file_id_str_buf(struct file_id fid, struct file_id_buf *dst)
 {
 	snprintf(dst->buf,
@@ -50,17 +42,6 @@ char *file_id_str_buf(struct file_id fid, struct file_id_buf *dst)
 	return dst->buf;
 }
 
-/*
-  an allocated string for a file_id structure
- */
-const char *file_id_string(TALLOC_CTX *mem_ctx, const struct file_id *id)
-{
-	struct file_id_buf buf;
-	char *result = talloc_strdup(mem_ctx, file_id_str_buf(*id, &buf));
-	SMB_ASSERT(result != NULL);
-	return result;
-}
-
 /*
   push a 16 byte version of a file id into a buffer.  This ignores the extid
   and is needed when dev/inodes are stored in persistent storage (tdbs).
diff --git a/source3/lib/file_id.h b/source3/lib/file_id.h
index c001199a35b..a946cb4d692 100644
--- a/source3/lib/file_id.h
+++ b/source3/lib/file_id.h
@@ -34,14 +34,9 @@ bool file_id_equal(const struct file_id *id1, const struct file_id *id2);
 struct file_id_buf { char buf[63]; };
 char *file_id_str_buf(struct file_id fid, struct file_id_buf *dst);
 
-/*
-  a static-like (on talloc_tos()) string for a file_id structure
- */
-const char *file_id_string_tos(const struct file_id *id);
 /*
   an allocated string for a file_id structure
  */
-const char *file_id_string(TALLOC_CTX *mem_ctx, const struct file_id *id);
 void push_file_id_16(char *buf, const struct file_id *id);
 void push_file_id_24(char *buf, const struct file_id *id);
 void pull_file_id_24(const char *buf, struct file_id *id);
diff --git a/source3/locking/share_mode_lock.c b/source3/locking/share_mode_lock.c
index 92289404468..4fcca861e48 100644
--- a/source3/locking/share_mode_lock.c
+++ b/source3/locking/share_mode_lock.c
@@ -177,11 +177,12 @@ static DATA_BLOB memcache_key(const struct file_id *id)
 static void share_mode_memcache_store(struct share_mode_data *d)
 {
 	const DATA_BLOB key = memcache_key(&d->id);
+	struct file_id_buf idbuf;
 
 	DBG_DEBUG("stored entry for file %s seq %"PRIx64" key %s\n",
 		  d->base_name,
 		  d->sequence_number,
-		  file_id_string(talloc_tos(), &d->id));
+		  file_id_str_buf(d->id, &idbuf));
 
 	/* Ensure everything stored in the cache is pristine. */
 	d->modified = false;
@@ -293,6 +294,7 @@ static struct share_mode_data *share_mode_memcache_fetch(TALLOC_CTX *mem_ctx,
 	uint16_t flags;
 	void *ptr;
 	struct file_id id;
+	struct file_id_buf idbuf;
 	DATA_BLOB key;
 
 	/* Ensure this is a locking_key record. */
@@ -307,17 +309,17 @@ static struct share_mode_data *share_mode_memcache_fetch(TALLOC_CTX *mem_ctx,
 			SHARE_MODE_LOCK_CACHE,
 			key);
 	if (ptr == NULL) {
-		DEBUG(10,("failed to find entry for key %s\n",
-			file_id_string(mem_ctx, &id)));
+		DBG_DEBUG("failed to find entry for key %s\n",
+			  file_id_str_buf(id, &idbuf));
 		return NULL;
 	}
 	/* sequence number key is at start of blob. */
 	ndr_err = get_share_mode_blob_header(blob, &sequence_number, &flags);
 	if (ndr_err != NDR_ERR_SUCCESS) {
 		/* Bad blob. Remove entry. */
-		DEBUG(10,("bad blob %u key %s\n",
-			(unsigned int)ndr_err,
-			file_id_string(mem_ctx, &id)));
+		DBG_DEBUG("bad blob %u key %s\n",
+			  (unsigned int)ndr_err,
+			  file_id_str_buf(id, &idbuf));
 		memcache_delete(NULL,
 			SHARE_MODE_LOCK_CACHE,
 			key);
@@ -330,7 +332,7 @@ static struct share_mode_data *share_mode_memcache_fetch(TALLOC_CTX *mem_ctx,
 			  "for key %s\n",
 			  d->sequence_number,
 			  sequence_number,
-			  file_id_string(mem_ctx, &id));
+			  file_id_str_buf(id, &idbuf));
 		/* Cache out of date. Remove entry. */
 		memcache_delete(NULL,
 			SHARE_MODE_LOCK_CACHE,
@@ -358,7 +360,7 @@ static struct share_mode_data *share_mode_memcache_fetch(TALLOC_CTX *mem_ctx,
 	DBG_DEBUG("fetched entry for file %s seq %"PRIx64" key %s\n",
 		  d->base_name,
 		  d->sequence_number,
-		  file_id_string(mem_ctx, &id));
+		  file_id_str_buf(id, &idbuf));
 
 	return d;
 }
@@ -1197,13 +1199,13 @@ bool share_mode_cleanup_disconnected(struct file_id fid,
 	struct share_mode_data *data;
 	bool ret = false;
 	TALLOC_CTX *frame = talloc_stackframe();
+	struct file_id_buf idbuf;
 	bool ok;
 
 	state.lck = get_existing_share_mode_lock(frame, fid);
 	if (state.lck == NULL) {
-		DEBUG(5, ("share_mode_cleanup_disconnected: "
-			  "Could not fetch share mode entry for %s\n",
-			  file_id_string(frame, &fid)));
+		DBG_INFO("Could not fetch share mode entry for %s\n",
+			 file_id_str_buf(fid, &idbuf));
 		goto done;
 	}
 	data = state.lck->data;
@@ -1226,7 +1228,7 @@ bool share_mode_cleanup_disconnected(struct file_id fid,
 			  "with file (file-id='%s', servicepath='%s', "
 			  "base_name='%s%s%s') and open_persistent_id %"PRIu64" "
 			  "==> do not cleanup\n",
-			  file_id_string(frame, &fid),
+			  file_id_str_buf(fid, &idbuf),
 			  data->servicepath,
 			  data->base_name,
 			  (data->stream_name == NULL)
@@ -1242,7 +1244,7 @@ bool share_mode_cleanup_disconnected(struct file_id fid,
 			  "with file (file-id='%s', servicepath='%s', "
 			  "base_name='%s%s%s') and open_persistent_id %"PRIu64" "
 			  "==> do not cleanup\n",
-			  file_id_string(frame, &fid),
+			  file_id_str_buf(fid, &idbuf),
 			  data->servicepath,
 			  data->base_name,
 			  (data->stream_name == NULL)
@@ -1258,7 +1260,7 @@ bool share_mode_cleanup_disconnected(struct file_id fid,
 		  "base_name='%s%s%s') "
 		  "from open_persistent_id %"PRIu64"\n",
 		  data->num_share_modes,
-		  file_id_string(frame, &fid),
+		  file_id_str_buf(fid, &idbuf),
 		  data->servicepath,
 		  data->base_name,
 		  (data->stream_name == NULL)
diff --git a/source3/smbd/files.c b/source3/smbd/files.c
index e0ec601c56f..077610cad75 100644
--- a/source3/smbd/files.c
+++ b/source3/smbd/files.c
@@ -344,11 +344,12 @@ files_struct *file_find_dif(struct smbd_server_connection *sconn,
 			if ((fsp->fh->fd == -1) &&
 			    (fsp->oplock_type != NO_OPLOCK &&
 			     fsp->oplock_type != LEASE_OPLOCK)) {
+				struct file_id_buf idbuf;
 				DEBUG(0,("file_find_dif: file %s file_id = "
 					 "%s, gen = %u oplock_type = %u is a "
 					 "stat open with oplock type !\n",
 					 fsp_str_dbg(fsp),
-					 file_id_string_tos(&fsp->file_id),
+					 file_id_str_buf(fsp->file_id, &idbuf),
 					 (unsigned int)fsp->fh->gen_id,
 					 (unsigned int)fsp->oplock_type ));
 				smb_panic("file_find_dif");
diff --git a/source3/smbd/oplock_linux.c b/source3/smbd/oplock_linux.c
index 2a494ea05c1..7549d492ce0 100644
--- a/source3/smbd/oplock_linux.c
+++ b/source3/smbd/oplock_linux.c
@@ -140,19 +140,22 @@ static void linux_oplock_signal_handler(struct tevent_context *ev_ctx,
 static bool linux_set_kernel_oplock(struct kernel_oplocks *ctx,
 				    files_struct *fsp, int oplock_type)
 {
+	struct file_id_buf idbuf;
+
 	if ( SMB_VFS_LINUX_SETLEASE(fsp, F_WRLCK) == -1) {
-		DEBUG(3,("linux_set_kernel_oplock: Refused oplock on file %s, "
-			 "fd = %d, file_id = %s. (%s)\n",
-			 fsp_str_dbg(fsp), fsp->fh->fd,
-			 file_id_string_tos(&fsp->file_id),
-			 strerror(errno)));
+		DBG_NOTICE("Refused oplock on file %s, "
+			   "fd = %d, file_id = %s. (%s)\n",
+			   fsp_str_dbg(fsp),
+			   fsp->fh->fd,
+			   file_id_str_buf(fsp->file_id, &idbuf),
+			   strerror(errno));
 		return False;
 	}
 	
 	DBG_NOTICE("got kernel oplock on file %s, "
 		   "file_id = %s gen_id = %"PRIu64"\n",
 		   fsp_str_dbg(fsp),
-		   file_id_string_tos(&fsp->file_id),
+		   file_id_str_buf(fsp->file_id, &idbuf),
 		   fsp->fh->gen_id);
 
 	return True;
@@ -165,6 +168,8 @@ static bool linux_set_kernel_oplock(struct kernel_oplocks *ctx,
 static void linux_release_kernel_oplock(struct kernel_oplocks *ctx,
 					files_struct *fsp, int oplock_type)
 {
+	struct file_id_buf idbuf;
+
 	if (DEBUGLVL(10)) {
 		/*
 		 * Check and print out the current kernel
@@ -175,7 +180,7 @@ static void linux_release_kernel_oplock(struct kernel_oplocks *ctx,
 			"gen_id = %"PRIu64" has kernel oplock state "
 			"of %x.\n",
 			fsp_str_dbg(fsp),
-		        file_id_string_tos(&fsp->file_id),
+		        file_id_str_buf(fsp->file_id, &idbuf),
 			fsp->fh->gen_id,
 			state);
 	}
@@ -190,7 +195,7 @@ static void linux_release_kernel_oplock(struct kernel_oplocks *ctx,
 			dbgtext("%s, file_id = %s, gen_id = %"PRIu64". "
 				"Error was %s\n",
 				fsp_str_dbg(fsp),
-				file_id_string_tos(&fsp->file_id),
+				file_id_str_buf(fsp->file_id, &idbuf),
 				fsp->fh->gen_id,
 				strerror(errno));
 		}
diff --git a/source3/smbd/scavenger.c b/source3/smbd/scavenger.c
index a9fda7f0641..cd5c85d2871 100644
--- a/source3/smbd/scavenger.c
+++ b/source3/smbd/scavenger.c
@@ -410,6 +410,7 @@ void scavenger_schedule_disconnected(struct files_struct *fsp)
 	struct scavenger_message msg;
 	DATA_BLOB msg_blob;
 	struct server_id_buf tmp;
+	struct file_id_buf idbuf;
 
 	if (fsp->op == NULL) {
 		return;
@@ -428,7 +429,7 @@ void scavenger_schedule_disconnected(struct files_struct *fsp)
 	DEBUG(10, ("smbd: %s mark file %s as disconnected at %s with timeout "
 		   "at %s in %fs\n",
 		   server_id_str_buf(self, &tmp),
-		   file_id_string_tos(&fsp->file_id),
+		   file_id_str_buf(fsp->file_id, &idbuf),
 		   timeval_string(talloc_tos(), &disconnect_time, true),
 		   timeval_string(talloc_tos(), &until, true),
 		   fsp->op->global->durable_timeout_msec/1000.0));
@@ -466,28 +467,30 @@ static void scavenger_timer(struct tevent_context *ev,
 {
 	struct scavenger_timer_context *ctx =
 		talloc_get_type_abort(data, struct scavenger_timer_context);
+	struct file_id_buf idbuf;
 	NTSTATUS status;
 	bool ok;
 
-	DEBUG(10, ("scavenger: do cleanup for file %s at %s\n",
-		  file_id_string_tos(&ctx->msg.file_id),
-		  timeval_string(talloc_tos(), &t, true)));
+	DBG_DEBUG("do cleanup for file %s at %s\n",
+		  file_id_str_buf(ctx->msg.file_id, &idbuf),
+		  timeval_string(talloc_tos(), &t, true));
 
 	ok = share_mode_cleanup_disconnected(ctx->msg.file_id,
 					     ctx->msg.open_persistent_id);
 	if (!ok) {
-		DEBUG(2, ("Failed to cleanup share modes and byte range locks "
-			  "for file %s open %llu\n",
-			  file_id_string_tos(&ctx->msg.file_id),
-			  (unsigned long long)ctx->msg.open_persistent_id));
+		DBG_WARNING("Failed to cleanup share modes and byte range "
+			    "locks for file %s open %"PRIu64"\n",
+			    file_id_str_buf(ctx->msg.file_id, &idbuf),
+			    ctx->msg.open_persistent_id);
 	}
 
 	status = smbXsrv_open_cleanup(ctx->msg.open_persistent_id);
 	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(2, ("Failed to cleanup open global for file %s open %llu:"
-			  " %s\n", file_id_string_tos(&ctx->msg.file_id),
-			  (unsigned long long)ctx->msg.open_persistent_id,
-			  nt_errstr(status)));
+		DBG_WARNING("Failed to cleanup open global for file %s open "
+			    "%"PRIu64": %s\n",
+			    file_id_str_buf(ctx->msg.file_id, &idbuf),
+			    ctx->msg.open_persistent_id,
+			    nt_errstr(status));
 	}
 }
 
@@ -497,12 +500,13 @@ static void scavenger_add_timer(struct smbd_scavenger_state *state,
 	struct tevent_timer *te;
 	struct scavenger_timer_context *ctx;
 	struct timeval until;
+	struct file_id_buf idbuf;
 
 	nttime_to_timeval(&until, msg->until);
 
-	DEBUG(10, ("scavenger: schedule file %s for cleanup at %s\n",
-		   file_id_string_tos(&msg->file_id),
-		   timeval_string(talloc_tos(), &until, true)));
+	DBG_DEBUG("schedule file %s for cleanup at %s\n",
+		  file_id_str_buf(msg->file_id, &idbuf),
+		  timeval_string(talloc_tos(), &until, true));
 
 	ctx = talloc_zero(state, struct scavenger_timer_context);
 	if (ctx == NULL) {
diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c
index 130fe5048c0..7044ecb991a 100644
--- a/source3/smbd/smb2_server.c
+++ b/source3/smbd/smb2_server.c
@@ -1600,15 +1600,11 @@ static void smbd_smb2_request_pending_timer(struct tevent_context *ev,
 	uint8_t *outhdr = NULL;
 	const uint8_t *inhdr = NULL;
 	uint8_t *tf = NULL;
-	size_t tf_len = 0;
 	uint8_t *hdr = NULL;
 	uint8_t *body = NULL;
 	uint8_t *dyn = NULL;
 	uint32_t flags = 0;
-	uint64_t session_id = 0;
 	uint64_t message_id = 0;
-	uint64_t nonce_high = 0;
-	uint64_t nonce_low = 0;
 	uint64_t async_id = 0;
 	NTSTATUS status;
 	bool ok;
@@ -1620,7 +1616,6 @@ static void smbd_smb2_request_pending_timer(struct tevent_context *ev,
 	outhdr = SMBD_SMB2_OUT_HDR_PTR(req);
 	flags = IVAL(outhdr, SMB2_HDR_FLAGS);
 	message_id = BVAL(outhdr, SMB2_HDR_MESSAGE_ID);
-	session_id = BVAL(outhdr, SMB2_HDR_SESSION_ID);
 
 	async_id = message_id; /* keep it simple for now... */
 
@@ -1646,13 +1641,16 @@ static void smbd_smb2_request_pending_timer(struct tevent_context *ev,
 	}
 
 	tf = state->buf + NBT_HDR_SIZE;
-	tf_len = SMB2_TF_HDR_SIZE;
 
 	hdr = tf + SMB2_TF_HDR_SIZE;
 	body = hdr + SMB2_HDR_BODY;
 	dyn = body + 8;
 
 	if (req->do_encryption) {
+		uint64_t nonce_high = 0;
+		uint64_t nonce_low = 0;
+		uint64_t session_id = req->session->global->session_wire_id;
+
 		status = smb2_get_new_nonce(req->session,
 					    &nonce_high,
 					    &nonce_low);
@@ -1661,12 +1659,12 @@ static void smbd_smb2_request_pending_timer(struct tevent_context *ev,
 							 nt_errstr(status));
 			return;
 		}
-	}
 
-	SIVAL(tf, SMB2_TF_PROTOCOL_ID, SMB2_TF_MAGIC);
-	SBVAL(tf, SMB2_TF_NONCE+0, nonce_low);
-	SBVAL(tf, SMB2_TF_NONCE+8, nonce_high);
-	SBVAL(tf, SMB2_TF_SESSION_ID, session_id);
+		SIVAL(tf, SMB2_TF_PROTOCOL_ID, SMB2_TF_MAGIC);
+		SBVAL(tf, SMB2_TF_NONCE+0, nonce_low);
+		SBVAL(tf, SMB2_TF_NONCE+8, nonce_high);
+		SBVAL(tf, SMB2_TF_SESSION_ID, session_id);
+	}
 
 	SIVAL(hdr, SMB2_HDR_PROTOCOL_ID, SMB2_MAGIC);
 	SSVAL(hdr, SMB2_HDR_LENGTH, SMB2_HDR_BODY);
@@ -1696,7 +1694,8 @@ static void smbd_smb2_request_pending_timer(struct tevent_context *ev,
 
 	if (req->do_encryption) {
 		state->vector[1+SMBD_SMB2_TF_IOV_OFS].iov_base   = tf;
-		state->vector[1+SMBD_SMB2_TF_IOV_OFS].iov_len    = tf_len;
+		state->vector[1+SMBD_SMB2_TF_IOV_OFS].iov_len    =
+							SMB2_TF_HDR_SIZE;
 	} else {
 		state->vector[1+SMBD_SMB2_TF_IOV_OFS].iov_base   = NULL;
 		state->vector[1+SMBD_SMB2_TF_IOV_OFS].iov_len    = 0;
diff --git a/source3/torture/locktest2.c b/source3/torture/locktest2.c
index 6ab1ed4fa19..84fdddbf93c 100644
--- a/source3/torture/locktest2.c
+++ b/source3/torture/locktest2.c
@@ -156,8 +156,11 @@ static void print_brl(struct file_id id, struct server_id pid,
 		      br_off start, br_off size,
 		      void *private_data)
 {
+	struct file_id_buf idbuf;
+
 	printf("%6d   %s    %s  %.0f:%.0f(%.0f)\n", 
-	       (int)procid_to_pid(&pid), file_id_string_tos(&id),
+	       (int)procid_to_pid(&pid),
+	       file_id_str_buf(id, &idbuf),
 	       lock_type==READ_LOCK?"R":"W",
 	       (double)start, (double)start+size-1,(double)size);
 


-- 
Samba Shared Repository



More information about the samba-cvs mailing list