[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Wed Dec 12 21:20:03 UTC 2018


The branch, master has been updated
       via  9c507e98f03 libcli:security: Return early if there are no aces to duplicate
       via  e7a8e4e6433 libcli:security: Do not duplicate invalid aces
       via  eabe6d534c5 lib:talloc: Fix undefined behavior in talloc_memdup
      from  a80fee5054d s4:torture/smb2/session: Fix expire tests

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


- Log -----------------------------------------------------------------
commit 9c507e98f03eabe59df774a9a5f51411fc23d4e5
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 12 10:21:25 2018 +0100

    libcli:security: Return early if there are no aces to duplicate
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Wed Dec 12 22:18:52 CET 2018 on sn-devel-144

commit e7a8e4e6433bf26f6eac46e6a5f65f421a8981bb
Author: Andreas Schneider <asn at samba.org>
Date:   Wed Dec 12 10:08:53 2018 +0100

    libcli:security: Do not duplicate invalid aces
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>

commit eabe6d534c5c8c6ca38f3dc846f17aad6395da8c
Author: Andreas Schneider <asn at samba.org>
Date:   Thu Nov 22 16:10:39 2018 +0100

    lib:talloc: Fix undefined behavior in talloc_memdup
    
    lib/talloc/talloc.c:2419: runtime error: null pointer passed as argument
    2, which is declared to never be null
    
    Signed-off-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>

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

Summary of changes:
 lib/talloc/talloc.c                   |  9 +++++++--
 libcli/security/security_descriptor.c | 19 ++++++++++++++-----
 2 files changed, 21 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/talloc/talloc.c b/lib/talloc/talloc.c
index 54be63495ae..073a3e50d4b 100644
--- a/lib/talloc/talloc.c
+++ b/lib/talloc/talloc.c
@@ -2413,9 +2413,14 @@ _PUBLIC_ void *_talloc_zero(const void *ctx, size_t size, const char *name)
 */
 _PUBLIC_ void *_talloc_memdup(const void *t, const void *p, size_t size, const char *name)
 {
-	void *newp = _talloc_named_const(t, size, name);
+	void *newp = NULL;
 
-	if (likely(newp)) {
+	if (likely(size > 0) && unlikely(p == NULL)) {
+		return NULL;
+	}
+
+	newp = _talloc_named_const(t, size, name);
+	if (likely(newp != NULL) && likely(size > 0)) {
 		memcpy(newp, p, size);
 	}
 
diff --git a/libcli/security/security_descriptor.c b/libcli/security/security_descriptor.c
index 0a2bb952b0e..7b7a13d421d 100644
--- a/libcli/security/security_descriptor.c
+++ b/libcli/security/security_descriptor.c
@@ -58,20 +58,29 @@ struct security_acl *security_acl_dup(TALLOC_CTX *mem_ctx,
 		return NULL;
 	}
 
+	if (oacl->aces == NULL && oacl->num_aces > 0) {
+		return NULL;
+	}
+
 	nacl = talloc (mem_ctx, struct security_acl);
 	if (nacl == NULL) {
 		return NULL;
 	}
 
+	*nacl = (struct security_acl) {
+		.revision = oacl->revision,
+		.size     = oacl->size,
+		.num_aces = oacl->num_aces,
+	};
+	if (nacl->num_aces == 0) {
+		return nacl;
+	}
+
 	nacl->aces = (struct security_ace *)talloc_memdup (nacl, oacl->aces, sizeof(struct security_ace) * oacl->num_aces);
-	if ((nacl->aces == NULL) && (oacl->num_aces > 0)) {
+	if (nacl->aces == NULL) {
 		goto failed;
 	}
 
-	nacl->revision = oacl->revision;
-	nacl->size = oacl->size;
-	nacl->num_aces = oacl->num_aces;
-	
 	return nacl;
 
  failed:


-- 
Samba Shared Repository



More information about the samba-cvs mailing list