[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