[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Fri Nov 16 17:12:02 MST 2012


The branch, master has been updated
       via  e6a100e s3:modules:nfs4_acls remove unused mem_ctx parameter to smbacl4_fill_ace4
       via  c9d7074 s3:modules:nfs4_acls fix memory hierarchy in smb_create_smb4acl
       via  775d0a7 s3:vfs_gpfs fix a memory leak in gpfsacl_get_posix_acl
       via  1a71f07 s3:vfs_gpfs fix memory corruption in gpfs2smb_acl
       via  3dab1ef s3:vfs_gpfs fix memory leak in gpfs_get_nfs4_acl
       via  3925a71 s3:vfs_gpfs fix memory leaks in gpfs_getacl_alloc
      from  10b6cce samba-tool dns: Don't use "localhost" to connect to local host

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


- Log -----------------------------------------------------------------
commit e6a100e86b7adf1c06a7c06b24fa50717ddcdb67
Author: Christian Ambach <ambi at samba.org>
Date:   Mon Nov 5 18:49:54 2012 +0100

    s3:modules:nfs4_acls remove unused mem_ctx parameter to smbacl4_fill_ace4
    
    Signed-off-by: Christian Ambach <ambi at samba.org>
    
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Sat Nov 17 01:11:07 CET 2012 on sn-devel-104

commit c9d70740e39722a2f98ccd932b053723a4f3de62
Author: Christian Ambach <ambi at samba.org>
Date:   Mon Nov 5 18:47:01 2012 +0100

    s3:modules:nfs4_acls fix memory hierarchy in smb_create_smb4acl
    
    the ACEs should be talloc children of the ACL itself and not be placed on talloc_tos()
    
    Signed-off-by: Christian Ambach <ambi at samba.org>
    
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 775d0a78c496af8ddbde9eb0f8c2f6d5dc5bcc81
Author: Christian Ambach <ambi at samba.org>
Date:   Fri Nov 2 08:41:40 2012 +0100

    s3:vfs_gpfs fix a memory leak in gpfsacl_get_posix_acl
    
    Signed-off-by: Christian Ambach <ambi at samba.org>
    
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 1a71f07cee0bfe50ea6821a195a950d2206aab55
Author: Christian Ambach <ambi at samba.org>
Date:   Fri Nov 2 08:41:10 2012 +0100

    s3:vfs_gpfs fix memory corruption in gpfs2smb_acl
    
    sys_acl_init returns a SMB_ACL_T with zero entries in the acl array
    reallocate the array to proper size before filling it, otherwise we overwrite memory
    
    This one is a result of a improper fixing in 7a6182962966e5edb42728c8
    
    Signed-off-by: Christian Ambach <ambi at samba.org>
    
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 3dab1ef8a57670a36a81e706895bbe225892f3ff
Author: Christian Ambach <ambi at samba.org>
Date:   Fri Nov 2 08:39:45 2012 +0100

    s3:vfs_gpfs fix memory leak in gpfs_get_nfs4_acl
    
    Signed-off-by: Christian Ambach <ambi at samba.org>
    
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

commit 3925a7114caaac56e79849ebf3aa13784918282b
Author: Christian Ambach <ambi at samba.org>
Date:   Fri Nov 2 08:39:17 2012 +0100

    s3:vfs_gpfs fix memory leaks in gpfs_getacl_alloc
    
    Signed-off-by: Christian Ambach <ambi at samba.org>
    
    Reviewed-by: Andrew Bartlett <abartlet at samba.org>

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

Summary of changes:
 source3/modules/nfs4_acls.c |    7 ++-----
 source3/modules/vfs_gpfs.c  |   12 ++++++++++--
 2 files changed, 12 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/nfs4_acls.c b/source3/modules/nfs4_acls.c
index 48b045f..67db6b0 100644
--- a/source3/modules/nfs4_acls.c
+++ b/source3/modules/nfs4_acls.c
@@ -161,11 +161,10 @@ SMB4ACL_T *smb_create_smb4acl(void)
 SMB4ACE_T *smb_add_ace4(SMB4ACL_T *theacl, SMB_ACE4PROP_T *prop)
 {
 	SMB_ACL4_INT_T *aclint = get_validated_aclint(theacl);
-	TALLOC_CTX *mem_ctx = talloc_tos();
 	SMB_ACE4_INT_T *ace;
 
 	ace = (SMB_ACE4_INT_T *)TALLOC_ZERO_SIZE(
-		mem_ctx, sizeof(SMB_ACE4_INT_T));
+		theacl, sizeof(SMB_ACE4_INT_T));
 	if (ace==NULL)
 	{
 		DEBUG(0, ("TALLOC_SIZE failed\n"));
@@ -581,7 +580,6 @@ static SMB_ACE4PROP_T *smbacl4_find_equal_special(
 
 
 static bool smbacl4_fill_ace4(
-	TALLOC_CTX *mem_ctx,
 	const struct smb_filename *filename,
 	smbacl4_vfs_params *params,
 	uid_t ownerUID,
@@ -702,7 +700,6 @@ static SMB4ACL_T *smbacl4_win2nfs4(
 {
 	SMB4ACL_T *theacl;
 	uint32	i;
-	TALLOC_CTX *mem_ctx = talloc_tos();
 	const char *filename = fsp->fsp_name->base_name;
 
 	DEBUG(10, ("smbacl4_win2nfs4 invoked\n"));
@@ -715,7 +712,7 @@ static SMB4ACL_T *smbacl4_win2nfs4(
 		SMB_ACE4PROP_T	ace_v4;
 		bool	addNewACE = True;
 
-		if (!smbacl4_fill_ace4(mem_ctx, fsp->fsp_name, pparams,
+		if (!smbacl4_fill_ace4(fsp->fsp_name, pparams,
 				       ownerUID, ownerGID,
 				       dacl->aces + i, &ace_v4)) {
 			DEBUG(3, ("Could not fill ace for file %s, SID %s\n",
diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index 8e8c694..8f5a19c 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -242,6 +242,7 @@ static struct gpfs_acl *gpfs_getacl_alloc(const char *fname, gpfs_aclType_t type
 		struct gpfs_acl *new_acl = (struct gpfs_acl *)TALLOC_SIZE(
 			mem_ctx, acl->acl_len + sizeof(struct gpfs_acl));
 		if (new_acl == NULL) {
+			talloc_free(acl);
 			errno = ENOMEM;
 			return NULL;
 		}
@@ -250,13 +251,14 @@ static struct gpfs_acl *gpfs_getacl_alloc(const char *fname, gpfs_aclType_t type
 		new_acl->acl_level = acl->acl_level;
 		new_acl->acl_version = acl->acl_version;
 		new_acl->acl_type = acl->acl_type;
+		talloc_free(acl);
 		acl = new_acl;
 
 		ret = smbd_gpfs_getacl((char *)fname, GPFS_GETACL_STRUCT, acl);
 	}
-	if (ret != 0)
-	{
+	if (ret != 0) {
 		DEBUG(8, ("smbd_gpfs_getacl failed with %s\n",strerror(errno)));
+		talloc_free(acl);
 		return NULL;
 	}
 
@@ -286,6 +288,7 @@ static int gpfs_get_nfs4_acl(const char *fname, SMB4ACL_T **ppacl)
 	if (gacl->acl_type != GPFS_ACL_TYPE_NFS4) {
 		DEBUG(10, ("Got non-nfsv4 acl\n"));
 		/* Retry with POSIX ACLs check */
+		talloc_free(gacl);
 		return 1;
 	}
 
@@ -570,6 +573,8 @@ static SMB_ACL_T gpfs2smb_acl(const struct gpfs_acl *pacl, TALLOC_CTX *mem_ctx)
 	}
 
 	result->count = pacl->acl_nace;
+	result->acl = talloc_realloc(result, result->acl, struct smb_acl_entry,
+				     result->count);
 
 	for (i=0; i<pacl->acl_nace; i++) {
 		struct smb_acl_entry *ace = &result->acl[i];
@@ -658,6 +663,9 @@ static SMB_ACL_T gpfsacl_get_posix_acl(const char *path, gpfs_aclType_t type,
 
  done:
 
+	if (pacl != NULL) {
+		talloc_free(pacl);
+	}
 	if (errno != 0) {
 		TALLOC_FREE(result);
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list