[SCM] Samba Shared Repository - branch master updated

Pavel Filipensky pfilipensky at samba.org
Wed Aug 30 13:38:01 UTC 2023


The branch, master has been updated
       via  3fbc514a2c3 docs:smbdotconf: Inform that changing 'winbind max domain connections' needs a restart
       via  8abac09763a s3:winbindd: Use a correct value for the length of domain children
       via  b13d4370d2b s3:winbindd: Avoid doing the same assignment twice
      from  3afa27a01ca mdssvc: better support for search with mdfind from Macs

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


- Log -----------------------------------------------------------------
commit 3fbc514a2c350daa358a3a172df63b6ca9056c2e
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Mon Aug 28 09:44:39 2023 +0200

    docs:smbdotconf: Inform that changing 'winbind max domain connections' needs a restart
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Pavel Filipensky <pfilipensky at samba.org>
    Autobuild-Date(master): Wed Aug 30 13:37:37 UTC 2023 on atb-devel-224

commit 8abac09763aa06ad7137b9de35d18b5528e4033b
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Fri Aug 25 09:50:56 2023 +0200

    s3:winbindd: Use a correct value for the length of domain children
    
    We often loop over the array of domain children. However, the size of
    the array is calculated as lp_winbind_max_domain_connections() which can
    change (it is based on smb.conf). The fix is the talloc_array_length().
    
    Reproducer:
    
    winbind max domain connections = 100
    
    smbcontrol all reload-config
    smbcontrol all debug 10
    
    /var/log/samba/log.winbindd shows many lines with random garbage pid:
    
    [2023/08/25 10:03:49.898994, 10, pid=158296, effective(0, 0), real(0, 0), class=winbind] ../../source3/winbindd/winbindd_dual.c:885(winbind_msg_relay_fn)
      winbind_msg_relay_fn: sending message to pid 1037686087.
    [2023/08/25 10:03:49.899010,  3, pid=158296, effective(0, 0), real(0, 0)] ../../source3/lib/util_procid.c:53(pid_to_procid)
      pid_to_procid: messaging_dgm_get_unique failed: No such file or directory
    
    In this scenario we dereference only a garbage PID, but if we would
    dereference some garbage pointer we would segfault.
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit b13d4370d2bbf6efc92ee6bb97efaa74eb9536d1
Author: Pavel Filipenský <pfilipensky at samba.org>
Date:   Thu Aug 24 15:42:12 2023 +0200

    s3:winbindd: Avoid doing the same assignment twice
    
    Done already in setup_child(): child->domain = domain
    
    Signed-off-by: Pavel Filipenský <pfilipensky at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

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

Summary of changes:
 docs-xml/smbdotconf/winbind/winbindmaxdomainconnections.xml | 1 +
 source3/winbindd/winbindd_domain.c                          | 3 +--
 source3/winbindd/winbindd_dual.c                            | 4 ++--
 source3/winbindd/winbindd_ndr.c                             | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/smbdotconf/winbind/winbindmaxdomainconnections.xml b/docs-xml/smbdotconf/winbind/winbindmaxdomainconnections.xml
index be39143eb08..5cd846e0a31 100644
--- a/docs-xml/smbdotconf/winbind/winbindmaxdomainconnections.xml
+++ b/docs-xml/smbdotconf/winbind/winbindmaxdomainconnections.xml
@@ -11,6 +11,7 @@
 	Setting this parameter to a value greater than 1 can improve
 	scalability with many simultaneous winbind requests,
 	some of which might be slow.
+	Changing this value requires a restart of winbindd.
 	</para>
 	<para>
 	Note that if <smbconfoption name="winbind offline logon"/> is set to
diff --git a/source3/winbindd/winbindd_domain.c b/source3/winbindd/winbindd_domain.c
index b1027735c8a..4c8aa9a278f 100644
--- a/source3/winbindd/winbindd_domain.c
+++ b/source3/winbindd/winbindd_domain.c
@@ -29,9 +29,8 @@ void setup_domain_child(struct winbindd_domain *domain)
 {
 	int i;
 
-        for (i=0; i<lp_winbind_max_domain_connections(); i++) {
+        for (i=0; i<talloc_array_length(domain->children); i++) {
                 setup_child(domain, &domain->children[i],
                             "log.wb", domain->name);
-		domain->children[i].domain = domain;
 	}
 }
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index dadae1d3eda..313e11f149c 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -62,7 +62,7 @@ static void forall_domain_children(bool (*fn)(struct winbindd_child *c,
 	for (d = domain_list(); d != NULL; d = d->next) {
 		int i;
 
-		for (i = 0; i < lp_winbind_max_domain_connections(); i++) {
+		for (i = 0; i < talloc_array_length(d->children); i++) {
 			struct winbindd_child *c = &d->children[i];
 			bool ok;
 
@@ -434,7 +434,7 @@ static struct winbindd_child *choose_domain_child(struct winbindd_domain *domain
 	struct winbindd_child *current;
 	int i;
 
-	for (i=0; i<lp_winbind_max_domain_connections(); i++) {
+	for (i=0; i<talloc_array_length(domain->children); i++) {
 		size_t shortest_len, current_len;
 
 		current = &domain->children[i];
diff --git a/source3/winbindd/winbindd_ndr.c b/source3/winbindd/winbindd_ndr.c
index 7b48ddb2b90..a52a704c024 100644
--- a/source3/winbindd/winbindd_ndr.c
+++ b/source3/winbindd/winbindd_ndr.c
@@ -154,7 +154,7 @@ void ndr_print_winbindd_domain(struct ndr_print *ndr,
 	ndr_print_uint32(ndr, "sequence_number", r->sequence_number);
 	ndr_print_NTSTATUS(ndr, "last_status", r->last_status);
 	ndr_print_winbindd_cm_conn(ndr, "conn", &r->conn);
-	for (i=0; i<lp_winbind_max_domain_connections(); i++) {
+	for (i=0; i<talloc_array_length(r->children); i++) {
 		ndr_print_winbindd_child(ndr, "children", &r->children[i]);
 	}
 	ndr_print_ptr(ndr, "check_online_event", r->check_online_event);


-- 
Samba Shared Repository



More information about the samba-cvs mailing list