[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Fri May 20 20:00:01 UTC 2022


The branch, master has been updated
       via  be944dce00e srvsvcd: Silence a integer type warning
       via  5f82f01a3be srvsvcd: Avoid an "else" due to the early return
       via  d4a6e72d5c5 srvsvcd: Directly initialize variables in count_for_all_fn()
       via  48168614d45 srvsvcd: Align integer types
       via  c90aff07ab8 srvsvcd: Fix shareinfo2 max_connections calculation
       via  8ea8526d131 srvsvcd: Use UINT32_MAX where appropriate
       via  78ebd8af885 registry3: Align some integer types
       via  a771f1d314b smbd: Simplify copy_file()
       via  e7a60eb7c93 smbd: Simplify copy_file()
      from  9bacf7529dd s3:winbind: Remove struct winbindd_child_dispatch_table

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


- Log -----------------------------------------------------------------
commit be944dce00e7bad5af68aea0f75c0dd2f2ce26ae
Author: Volker Lendecke <vl at samba.org>
Date:   Sun May 15 13:30:09 2022 +0200

    srvsvcd: Silence a integer type warning
    
    Okay because lp_csc_policy() is an enum with 4 choices
    
    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): Fri May 20 19:59:07 UTC 2022 on sn-devel-184

commit 5f82f01a3be1ff805b3203bc0af806db7800cc76
Author: Volker Lendecke <vl at samba.org>
Date:   Sun May 15 13:20:34 2022 +0200

    srvsvcd: Avoid an "else" due to the early return
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit d4a6e72d5c5bd3556907874045cce9a4782b0730
Author: Volker Lendecke <vl at samba.org>
Date:   Sun May 15 13:19:35 2022 +0200

    srvsvcd: Directly initialize variables in count_for_all_fn()
    
    Easier to read for me
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 48168614d4582a6c0466e3a8b83d3d524c47523d
Author: Volker Lendecke <vl at samba.org>
Date:   Sun May 15 13:18:24 2022 +0200

    srvsvcd: Align integer types
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit c90aff07ab82d3e91729d89d48bc14dbb348d0d6
Author: Volker Lendecke <vl at samba.org>
Date:   Sun May 15 13:17:06 2022 +0200

    srvsvcd: Fix shareinfo2 max_connections calculation
    
    lp_max_connections() being an int could be >UINT32_MAX
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 8ea8526d131107f6d2e71bc56753f89e7125c778
Author: Volker Lendecke <vl at samba.org>
Date:   Sun May 15 13:15:31 2022 +0200

    srvsvcd: Use UINT32_MAX where appropriate
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 78ebd8af885841a39eece623623a7807a83903c4
Author: Volker Lendecke <vl at samba.org>
Date:   Thu May 19 20:10:52 2022 +0200

    registry3: Align some integer types
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit a771f1d314bc41b59a279b1859ed28714bed3040
Author: Volker Lendecke <vl at samba.org>
Date:   Fri May 20 08:06:28 2022 +0200

    smbd: Simplify copy_file()
    
    Pass in new_create_disposition directly. We can also remove the
    if-case (ofun & OPENX_FILE_EXISTS_OPEN) in copy_file, the two callers
    don't use it.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit e7a60eb7c93f18af0ce05e16511f3c7b17617273
Author: Volker Lendecke <vl at samba.org>
Date:   Thu May 19 20:43:40 2022 +0200

    smbd: Simplify copy_file()
    
    The only two callers did not use "count" and "target_is_directory".
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 source3/modules/vfs_fruit.c               |  3 +-
 source3/printing/nt_printing.c            |  4 +--
 source3/registry/reg_backend_db.c         |  6 ++--
 source3/registry/reg_parse.c              |  4 +--
 source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 32 +++++++++---------
 source3/smbd/proto.h                      |  4 +--
 source3/smbd/smb2_reply.c                 | 56 +------------------------------
 7 files changed, 26 insertions(+), 83 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
index 183c4e02371..05ab8fcea69 100644
--- a/source3/modules/vfs_fruit.c
+++ b/source3/modules/vfs_fruit.c
@@ -4781,8 +4781,7 @@ static void fruit_offload_write_done(struct tevent_req *subreq)
 				   state->handle->conn,
 				   src_fname_tmp,
 				   dst_fname_tmp,
-				   OPENX_FILE_CREATE_IF_NOT_EXIST,
-				   0, false);
+				   FILE_CREATE);
 		if (!NT_STATUS_IS_OK(status)) {
 			DEBUG(1, ("%s: copy %s to %s failed: %s\n", __func__,
 				  smb_fname_str_dbg(src_fname_tmp),
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index 6961a4ddda9..0929e532436 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -1460,9 +1460,7 @@ static WERROR move_driver_file_to_download_area(TALLOC_CTX *mem_ctx,
 			  smb_fname_new->base_name));
 
 		status = copy_file(mem_ctx, conn, smb_fname_old, smb_fname_new,
-				   OPENX_FILE_EXISTS_TRUNCATE |
-				   OPENX_FILE_CREATE_IF_NOT_EXIST,
-				   0, false);
+				   FILE_OVERWRITE_IF);
 
 		if (!NT_STATUS_IS_OK(status)) {
 			DEBUG(0,("move_driver_file_to_download_area: Unable "
diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c
index b1f6425d56a..829b82d9059 100644
--- a/source3/registry/reg_backend_db.c
+++ b/source3/registry/reg_backend_db.c
@@ -1045,7 +1045,7 @@ static WERROR regdb_store_keys_internal2(struct db_context *db,
 {
 	TDB_DATA dbuf;
 	uint8_t *buffer = NULL;
-	int i = 0;
+	uint32_t i = 0;
 	uint32_t len, buflen;
 	uint32_t num_subkeys = regsubkey_ctr_numkeys(ctr);
 	char *keyname = NULL;
@@ -1739,7 +1739,7 @@ static WERROR regdb_fetch_keys_internal(struct db_context *db, const char *key,
 	uint32_t num_items;
 	uint8_t *buf;
 	uint32_t buflen, len;
-	int i;
+	uint32_t i;
 	fstring subkeyname;
 	TALLOC_CTX *frame = talloc_stackframe();
 	TDB_DATA value;
@@ -1854,7 +1854,7 @@ static int regdb_unpack_values(struct regval_ctr *values,
 	uint32_t	size;
 	uint8_t		*data_p;
 	uint32_t 	num_values = 0;
-	int 		i;
+	uint32_t	i;
 
 	/* loop and unpack the rest of the registry values */
 
diff --git a/source3/registry/reg_parse.c b/source3/registry/reg_parse.c
index 6230b000c3b..dc084dc51b7 100644
--- a/source3/registry/reg_parse.c
+++ b/source3/registry/reg_parse.c
@@ -641,7 +641,7 @@ static bool lookslike_utf16(const char* line, size_t len, bool* little_endian)
 
 	size_t l = MIN(len/2, 64);
 	const uint16_t* u = (const uint16_t*)line;
-	int i;
+	size_t i;
 
 	assert(len >= 2);
 
@@ -667,7 +667,7 @@ static bool lookslike_utf16(const char* line, size_t len, bool* little_endian)
 
 static bool lookslike_dos(const char* line, size_t len)
 {
-	int i;
+	size_t i;
 	for (i=0; i<len; i++) {
 		if ( (line[i] == '\0') || (line[i] & 0x80) ) {
 			return false;
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
index 99808ee8f3a..b6f2b34b8e8 100644
--- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
+++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c
@@ -282,9 +282,13 @@ static void init_srv_share_info_2(struct pipes_struct *p,
 	char *remark = NULL;
 	char *path = NULL;
 	int max_connections = lp_max_connections(snum);
-	uint32_t max_uses = max_connections!=0 ? max_connections : (uint32_t)-1;
+	uint32_t max_uses = UINT32_MAX;
 	char *net_name = lp_servicename(talloc_tos(), lp_sub, snum);
 
+	if (max_connections > 0) {
+		max_uses = MIN(max_connections, UINT32_MAX);
+	}
+
 	remark = lp_comment(p->mem_ctx, lp_sub, snum);
 	if (remark) {
 		remark = talloc_sub_full(
@@ -322,7 +326,7 @@ static void init_srv_share_info_2(struct pipes_struct *p,
 
 static void map_generic_share_sd_bits(struct security_descriptor *psd)
 {
-	int i;
+	uint32_t i;
 	struct security_acl *ps_dacl = NULL;
 
 	if (!psd)
@@ -563,16 +567,14 @@ static bool is_enumeration_allowed(struct pipes_struct *p,
 
 static int count_for_all_fn(struct smbXsrv_tcon_global0 *tcon, void *udp)
 {
-	union srvsvc_NetShareCtr *ctr = NULL;
-	struct srvsvc_NetShareInfo2 *info2 = NULL;
-	int share_entries = 0;
-	int i = 0;
+	union srvsvc_NetShareCtr *ctr = udp;
 
-	ctr = (union srvsvc_NetShareCtr *) udp;
+	/* Only called for level2 */
+	struct srvsvc_NetShareCtr2 *ctr2 = ctr->ctr2;
 
-	/* for level 2 */
-	share_entries  = ctr->ctr2->count;
-	info2 = &ctr->ctr2->array[0];
+	uint32_t share_entries = ctr2->count;
+	struct srvsvc_NetShareInfo2 *info2 = ctr2->array;
+	uint32_t i = 0;
 
 	for (i = 0; i < share_entries; i++, info2++) {
 		if (strequal(tcon->share_name, info2->name)) {
@@ -974,7 +976,7 @@ static int count_sess_files_fn(struct file_id fid,
 {
 	struct sess_file_info *info = data;
 	uint32_t rh = info->resume_handle;
-	int i;
+	uint32_t i;
 
 	for (i=0; i < info->num_entries; i++) {
 		/* rh+info->num_entries is safe, as we've
@@ -1968,13 +1970,13 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p,
 				     SHARE_1005_CSC_POLICY_MASK) >>
 				    SHARE_1005_CSC_POLICY_SHIFT;
 
-		if (client_csc_policy == lp_csc_policy(snum))
+		if (client_csc_policy == (uint32_t)lp_csc_policy(snum)) {
 			return WERR_OK;
-		else {
-			csc_policy = csc_policies[client_csc_policy];
-			csc_policy_changed = true;
 		}
 
+		csc_policy = csc_policies[client_csc_policy];
+		csc_policy_changed = true;
+
 		pathname = lp_path(ctx, lp_sub, snum);
 		comment = lp_comment(ctx, lp_sub, snum);
 		type = STYPE_DISKTREE;
diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h
index f49191b721f..9917562d1de 100644
--- a/source3/smbd/proto.h
+++ b/source3/smbd/proto.h
@@ -988,9 +988,7 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
 			connection_struct *conn,
 			struct smb_filename *smb_fname_src,
 			struct smb_filename *smb_fname_dst,
-			int ofun,
-			int count,
-			bool target_is_directory);
+			uint32_t new_create_disposition);
 uint64_t get_lock_offset(const uint8_t *data, int data_offset,
 			 bool large_file_format);
 
diff --git a/source3/smbd/smb2_reply.c b/source3/smbd/smb2_reply.c
index 5f3c9be41eb..673c1e2216b 100644
--- a/source3/smbd/smb2_reply.c
+++ b/source3/smbd/smb2_reply.c
@@ -1836,15 +1836,12 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
 			connection_struct *conn,
 			struct smb_filename *smb_fname_src,
 			struct smb_filename *smb_fname_dst,
-			int ofun,
-			int count,
-			bool target_is_directory)
+			uint32_t new_create_disposition)
 {
 	struct smb_filename *smb_fname_dst_tmp = NULL;
 	off_t ret=-1;
 	files_struct *fsp1,*fsp2;
 	uint32_t dosattrs;
-	uint32_t new_create_disposition;
 	NTSTATUS status;
 
 
@@ -1853,31 +1850,6 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
 		return NT_STATUS_NO_MEMORY;
 	}
 
-	/*
-	 * If the target is a directory, extract the last component from the
-	 * src filename and append it to the dst filename
-	 */
-	if (target_is_directory) {
-		const char *p;
-
-		/* dest/target can't be a stream if it's a directory. */
-		SMB_ASSERT(smb_fname_dst->stream_name == NULL);
-
-		p = strrchr_m(smb_fname_src->base_name,'/');
-		if (p) {
-			p++;
-		} else {
-			p = smb_fname_src->base_name;
-		}
-		smb_fname_dst_tmp->base_name =
-		    talloc_asprintf_append(smb_fname_dst_tmp->base_name, "/%s",
-					   p);
-		if (!smb_fname_dst_tmp->base_name) {
-			status = NT_STATUS_NO_MEMORY;
-			goto out;
-		}
-	}
-
 	status = vfs_file_exist(conn, smb_fname_src);
 	if (!NT_STATUS_IS_OK(status)) {
 		goto out;
@@ -1888,20 +1860,6 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
 		goto out;
 	}
 
-	if (!target_is_directory && count) {
-		new_create_disposition = FILE_OPEN;
-	} else {
-		if (!map_open_params_to_ntcreate(smb_fname_dst_tmp->base_name,
-						 0, ofun,
-						 NULL, NULL,
-						 &new_create_disposition,
-						 NULL,
-						 NULL)) {
-			status = NT_STATUS_INVALID_PARAMETER;
-			goto out;
-		}
-	}
-
 	/* Open the src file for reading. */
 	status = SMB_VFS_CREATE_FILE(
 		conn,					/* conn */
@@ -1966,18 +1924,6 @@ NTSTATUS copy_file(TALLOC_CTX *ctx,
 		goto out;
 	}
 
-	if (ofun & OPENX_FILE_EXISTS_OPEN) {
-		ret = SMB_VFS_LSEEK(fsp2, 0, SEEK_END);
-		if (ret == -1) {
-			DEBUG(0, ("error - vfs lseek returned error %s\n",
-				strerror(errno)));
-			status = map_nt_error_from_unix(errno);
-			close_file_free(NULL, &fsp1, ERROR_CLOSE);
-			close_file_free(NULL, &fsp2, ERROR_CLOSE);
-			goto out;
-		}
-	}
-
 	/* Do the actual copy. */
 	if (smb_fname_src->st.st_ex_size) {
 		ret = vfs_transfer_file(fsp1, fsp2, smb_fname_src->st.st_ex_size);


-- 
Samba Shared Repository



More information about the samba-cvs mailing list