[SCM] Samba Shared Repository - branch master updated

Ralph Böhme slow at samba.org
Thu Jan 5 18:01:01 UTC 2023


The branch, master has been updated
       via  dd86376294f smbd: Fix indentation
       via  17e9758b537 smbd: Fix CID 1518901 Logically dead code
       via  c1be654988a smbd: Fix CID 1518902 Use after free
      from  316b8fa4a8a nsswitch: remove winbind_nss_mutex

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


- Log -----------------------------------------------------------------
commit dd86376294fd4117521dd550165ee4943ae8bec1
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 5 15:17:44 2023 +0100

    smbd: Fix indentation
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>
    
    Autobuild-User(master): Ralph Böhme <slow at samba.org>
    Autobuild-Date(master): Thu Jan  5 18:00:17 UTC 2023 on sn-devel-184

commit 17e9758b537e3a43f4f290debdc2b812abb394ed
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 5 15:17:14 2023 +0100

    smbd: Fix CID 1518901 Logically dead code
    
    Signed-off-by: Volker Lendecke <vl at samba.org>
    Reviewed-by: Ralph Boehme <slow at samba.org>

commit c1be654988a14ed5ac7fb337716cb8f41daebca1
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 5 15:11:10 2023 +0100

    smbd: Fix CID 1518902 Use after free
    
    The SMB_REALLOC macro properly deals with failure to realloc, so
    overwriting the target variable is correct here.
    
    Signed-off-by: Volker Lendecke <vl at samba.org>

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

Summary of changes:
 source3/smbd/smb1_trans2.c | 55 +++++++++++-----------------------------------
 1 file changed, 13 insertions(+), 42 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/smb1_trans2.c b/source3/smbd/smb1_trans2.c
index 815e529b231..336024c9456 100644
--- a/source3/smbd/smb1_trans2.c
+++ b/source3/smbd/smb1_trans2.c
@@ -2113,15 +2113,13 @@ static NTSTATUS smb_q_unix_basic(
 	int *ptotal_data)
 {
 	const int total_data = 100;
-	char *pdata = NULL;
 
-	pdata = SMB_REALLOC(*ppdata, total_data);
-	if (pdata == NULL) {
+	*ppdata = SMB_REALLOC(*ppdata, total_data);
+	if (*ppdata == NULL) {
 		return NT_STATUS_NO_MEMORY;
 	}
-	store_file_unix_basic(conn, pdata, fsp, &smb_fname->st);
+	store_file_unix_basic(conn, *ppdata, fsp, &smb_fname->st);
 
-	*ppdata = pdata;
 	*ptotal_data = total_data;
 
 	return NT_STATUS_OK;
@@ -2136,15 +2134,13 @@ static NTSTATUS smb_q_unix_info2(
 	int *ptotal_data)
 {
 	const int total_data = 116;
-	char *pdata = NULL;
 
-	pdata = SMB_REALLOC(*ppdata, total_data);
-	if (pdata == NULL) {
+	*ppdata = SMB_REALLOC(*ppdata, total_data);
+	if (*ppdata == NULL) {
 		return NT_STATUS_NO_MEMORY;
 	}
-	store_file_unix_basic_info2(conn, pdata, fsp, &smb_fname->st);
+	store_file_unix_basic_info2(conn, *ppdata, fsp, &smb_fname->st);
 
-	*ppdata = pdata;
 	*ptotal_data = total_data;
 
 	return NT_STATUS_OK;
@@ -2442,12 +2438,12 @@ static NTSTATUS smb_q_posix_acl(
 	}
 	size_needed += SMB_POSIX_ACL_HEADER_SIZE;
 
-	pdata = SMB_REALLOC(*ppdata, size_needed);
-	if (pdata == NULL) {
+	*ppdata = SMB_REALLOC(*ppdata, size_needed);
+	if (*ppdata == NULL) {
 		status = NT_STATUS_NO_MEMORY;
 		goto out;
 	}
-	*ppdata = pdata;
+	pdata = *ppdata;
 
 	SSVAL(pdata,0,SMB_POSIX_ACL_VERSION);
 	SSVAL(pdata,2,num_file_acls);
@@ -2547,11 +2543,11 @@ static NTSTATUS smb_q_posix_symlink(
 
 	needed = (link_len+1)*2;
 
-	pdata = SMB_REALLOC(*ppdata, needed);
-	if (pdata == NULL) {
+	*ppdata = SMB_REALLOC(*ppdata, needed);
+	if (*ppdata == NULL) {
 		return NT_STATUS_NO_MEMORY;
 	}
-	*ppdata = pdata;
+	pdata = *ppdata;
 
 	status = srvstr_push(
 		pdata,
@@ -4413,7 +4409,6 @@ static void call_trans2setpathinfo(
 	struct files_struct *fsp = NULL;
 	char *params = *pparams;
 	uint32_t ucf_flags = ucf_flags_from_smb_request(req);
-	bool require_existing_object = true;
 	NTTIME twrp = 0;
 	char *fname = NULL;
 	bool info_level_handled;
@@ -4549,7 +4544,7 @@ static void call_trans2setpathinfo(
 	case SMB_SET_POSIX_ACL:
 		status = smb_set_posix_acl(
 			conn, req, *ppdata, total_data, NULL, smb_fname);
-			break;
+		break;
 	}
 
 	if (info_level_handled) {
@@ -4571,30 +4566,6 @@ static void call_trans2setpathinfo(
 	 */
 	fsp = smb_fname->fsp;
 
-	/*
-	 * There are 4 info levels which can
-	 * create a new object in the filesystem.
-	 * They are:
-	 * SMB_SET_FILE_UNIX_LINK -> creates POSIX symlink.
-	 * SMB_POSIX_PATH_OPEN -> creates POSIX file or directory.
-	 * SMB_SET_FILE_UNIX_BASIC:
-	 * SMB_SET_FILE_UNIX_INFO2: can create a POSIX special file.
-	 *
-	 * These info levels do not require an existing object.
-	 */
-	switch (info_level) {
-	case SMB_SET_FILE_UNIX_BASIC:
-	case SMB_SET_FILE_UNIX_INFO2:
-		require_existing_object = false;
-		break;
-	default:
-		break;
-	}
-
-	if (!VALID_STAT(smb_fname->st) && require_existing_object) {
-		reply_nterror(req, NT_STATUS_OBJECT_NAME_NOT_FOUND);
-	}
-
 	status = smbd_do_setfilepathinfo(
 		conn,
 		req,


-- 
Samba Shared Repository



More information about the samba-cvs mailing list