The branch, master has been updated
       via  13d98c8fa6d s3:passdb: Fix memory leak caused by recursion of 
get_global_sam_sid()
       via  dc18e2a222a s3:libads: Fix memory leaks in ads_create_machine_acct()
       via  18913d384ed s3:passdb: Do not leak memory in pdb_tdb
      from  f05b61b4991 gp: Skip site GP list if no site is found

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


- Log -----------------------------------------------------------------
commit 13d98c8fa6d1971adc687f2de01586a3c4739f55
Author: Andreas Schneider <a...@samba.org>
Date:   Tue Jan 23 11:07:19 2024 +0100

    s3:passdb: Fix memory leak caused by recursion of get_global_sam_sid()
    
    Direct leak of 68 byte(s) in 1 object(s) allocated from:
        #0 0x7f4f39cdc03f in malloc (/lib64/libasan.so.8+0xdc03f) (BuildId: 
3e1694ad218c99a8b1b69231666a27df63cf19d0)
        #1 0x7f4f36fbe427 in malloc_ ../../source3/lib/util_malloc.c:38
        #2 0x7f4f394b5e19 in pdb_generate_sam_sid 
../../source3/passdb/machine_sid.c:90
        #3 0x7f4f394b5e19 in get_global_sam_sid 
../../source3/passdb/machine_sid.c:211
        #4 0x7f4f394af366 in secrets_store_domain_sid 
../../source3/passdb/machine_account_secrets.c:143
        #5 0x7f4f394b5eb5 in pdb_generate_sam_sid 
../../source3/passdb/machine_sid.c:110
        #6 0x7f4f394b5eb5 in get_global_sam_sid 
../../source3/passdb/machine_sid.c:211
        #7 0x7f4f394af366 in secrets_store_domain_sid 
../../source3/passdb/machine_account_secrets.c:143
        #8 0x557a1f11d62c in net_setlocalsid ../../source3/utils/net.c:416
        #9 0x557a1f1c9972 in net_run_function ../../source3/utils/net_util.c:464
        #10 0x557a1f121129 in main ../../source3/utils/net.c:1372
        #11 0x7f4f34c281af in __libc_start_call_main 
../sysdeps/nptl/libc_start_call_main.h:58
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Volker Lendecke <v...@samba.org>
    
    Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org>
    Autobuild-Date(master): Tue Jan 23 14:30:58 UTC 2024 on atb-devel-224

commit dc18e2a222afaee8cfc9a4becb786d97d1a45d3a
Author: Andreas Schneider <a...@samba.org>
Date:   Tue Oct 31 14:04:31 2023 +0100

    s3:libads: Fix memory leaks in ads_create_machine_acct()
    
    Indirect leak of 291 byte(s) in 2 object(s) allocated from:
        #0 0x7fd77b6dc03f in malloc (/lib64/libasan.so.8+0xdc03f) (BuildId: 
3e1694ad218c99a8b1b69231666a27df63cf19d0)
        #1 0x7fd77b094bc2 in __talloc_with_prefix ../../lib/talloc/talloc.c:783
        #2 0x7fd77b096034 in __talloc ../../lib/talloc/talloc.c:825
        #3 0x7fd77b096034 in __talloc_strlendup ../../lib/talloc/talloc.c:2454
        #4 0x7fd77b096034 in talloc_strdup ../../lib/talloc/talloc.c:2470
        #5 0x7fd779996633 in add_string_to_array 
../../lib/util/util_strlist.c:504
        #6 0x7fd77b10c754 in ads_create_machine_acct 
../../source3/libads/ldap.c:2662
        #7 0x7fd77b46705f in libnet_join_precreate_machine_acct 
../../source3/libnet/libnet_join.c:390
        #8 0x7fd77b46705f in libnet_DomainJoin 
../../source3/libnet/libnet_join.c:2852
        #9 0x7fd77b46705f in libnet_Join ../../source3/libnet/libnet_join.c:3036
        #10 0x55fb9788d91a in net_ads_join ../../source3/utils/net_ads.c:1853
        #11 0x55fb9793ab86 in net_join ../../source3/utils/net_join.c:45
        #12 0x55fb9793084f in net_run_function 
../../source3/utils/net_util.c:454
        #13 0x55fb97889859 in main ../../source3/utils/net.c:1372
        #14 0x7fd7768281af in __libc_start_call_main 
../sysdeps/nptl/libc_start_call_main.h:58
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Volker Lendecke <v...@samba.org>

commit 18913d384edb8c49c69501fd6db5511312614594
Author: Andreas Schneider <a...@samba.org>
Date:   Fri Oct 27 12:09:53 2023 +0200

    s3:passdb: Do not leak memory in pdb_tdb
    
    ==19938==ERROR: LeakSanitizer: detected memory leaks
    
    Direct leak of 77 byte(s) in 1 object(s) allocated from:
        #0 0x7f7d482841f8 in strdup (/lib64/libasan.so.8+0x841f8) (BuildId: 
3e1694ad218c99a8b1b69231666a27df63cf19d0)
        #1 0x7f7d47204846  (bin/shared/libsamba-util.so.0+0x4c846) (BuildId: 
43b084eb9013442ac68eb1fc17649f142cbb0f94)
        #2 0x7f7d40b1d97a in pdb_init_tdbsam ../../source3/passdb/pdb_tdb.c:1361
        #3 0x7f7d4715f266  (bin/shared/libsamba-passdb.so.0+0x76266) (BuildId: 
13d2858e2217592a22a4ee9203fef759d52df733)
        #4 0x7f7d4715f57a  (bin/shared/libsamba-passdb.so.0+0x7657a) (BuildId: 
13d2858e2217592a22a4ee9203fef759d52df733)
        #5 0x7f7d47163700  (bin/shared/libsamba-passdb.so.0+0x7a700) (BuildId: 
13d2858e2217592a22a4ee9203fef759d52df733)
        #6 0x55a9177d3853 in main ../../source3/smbd/server.c:1928
        #7 0x7f7d434281af in __libc_start_call_main 
../sysdeps/nptl/libc_start_call_main.h:58
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Volker Lendecke <v...@samba.org>

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

Summary of changes:
 source3/libads/ldap.c                    |  4 ++--
 source3/passdb/machine_account_secrets.c | 10 ++++++----
 source3/passdb/pdb_tdb.c                 |  3 +++
 3 files changed, 11 insertions(+), 6 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c
index acf558a7ab3..b5139e59cfb 100644
--- a/source3/libads/ldap.c
+++ b/source3/libads/ldap.c
@@ -2659,7 +2659,7 @@ ADS_STATUS ads_create_machine_acct(ADS_STRUCT *ads,
                        goto done;
                }
 
-               ok = add_string_to_array(spn_array,
+               ok = add_string_to_array(ctx,
                                         spn,
                                         &spn_array,
                                         &num_spns);
@@ -2680,7 +2680,7 @@ ADS_STATUS ads_create_machine_acct(ADS_STRUCT *ads,
                        goto done;
                }
 
-               ok = add_string_to_array(spn_array,
+               ok = add_string_to_array(ctx,
                                         spn,
                                         &spn_array,
                                         &num_spns);
diff --git a/source3/passdb/machine_account_secrets.c 
b/source3/passdb/machine_account_secrets.c
index a80b1633892..c97b35e7e52 100644
--- a/source3/passdb/machine_account_secrets.c
+++ b/source3/passdb/machine_account_secrets.c
@@ -138,11 +138,13 @@ bool secrets_store_domain_sid(const char *domain, const 
struct dom_sid  *sid)
                            &clean_sid,
                            sizeof(struct dom_sid));
 
-       /* Force a re-query, in the case where we modified our domain */
+       /* Force a re-query */
        if (ret) {
-               if (dom_sid_equal(get_global_sam_sid(), sid) == false) {
-                       reset_global_sam_sid();
-               }
+               /*
+                * Do not call get_global_domain_sid() here, or we will call it
+                * recursively.
+                */
+               reset_global_sam_sid();
        }
        return ret;
 }
diff --git a/source3/passdb/pdb_tdb.c b/source3/passdb/pdb_tdb.c
index 4c578f8069d..f9ba193df3b 100644
--- a/source3/passdb/pdb_tdb.c
+++ b/source3/passdb/pdb_tdb.c
@@ -1346,6 +1346,9 @@ static NTSTATUS pdb_init_tdbsam(struct pdb_methods 
**pdb_method, const char *loc
                }
                pfile = tdbfile;
        }
+
+       /* Do not leak memory if the init function is called more than once */
+       SAFE_FREE(tdbsam_filename);
        tdbsam_filename = SMB_STRDUP(pfile);
        if (!tdbsam_filename) {
                return NT_STATUS_NO_MEMORY;


-- 
Samba Shared Repository

Reply via email to