The branch, master has been updated
       via  11ba2ed4472 third_party/heimdal: Import 
lorikeet-heimdal-202505280044 (commit 1be8ce37d618704abd82a2aa06058fa96845ad41)
       via  ea84959a720 s4:kdc: Fix memory leak of padata_value
       via  149d4364299 s4:kdc: Fix ticket encryption types memory leak
       via  a97aad91878 s4:kdc: Fix memory leak for unused keys in TGT
      from  c716bf33a53 lib/torture: directly remove the dummy signal event 
again to avoid flapping tests

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


- Log -----------------------------------------------------------------
commit 11ba2ed4472cdf7de0ccf9b41d7d301d9695c9dc
Author: Jennifer Sutton <[email protected]>
Date:   Wed May 28 12:52:26 2025 +1200

    third_party/heimdal: Import lorikeet-heimdal-202505280044 (commit 
1be8ce37d618704abd82a2aa06058fa96845ad41)
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15814
    
    Signed-off-by: Jennifer Sutton <[email protected]>
    Reviewed-by: Douglas Bagnall <[email protected]>
    
    Autobuild-User(master): Douglas Bagnall <[email protected]>
    Autobuild-Date(master): Tue Jun  3 22:52:34 UTC 2025 on atb-devel-224

commit ea84959a720d509f6a8acdde4d0f72d450cfb087
Author: Ivan Korytov <[email protected]>
Date:   Fri Feb 21 14:22:41 2025 +0300

    s4:kdc: Fix memory leak of padata_value
    
    md.padata_value is not needed even if no error occurred.
    kdc_request_add_encrypted_padata copies data from it to newly allocated 
r->ek.encrypted_pa_data.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15813
    
    Signed-off-by: Ivan Korytov <[email protected]>
    Reviewed-by: Jennifer Sutton <[email protected]>
    Reviewed-by: Douglas Bagnall <[email protected]>

commit 149d4364299bea61b5308965916ad7990f56197b
Author: Ivan Korytov <[email protected]>
Date:   Fri Feb 21 13:57:10 2025 +0300

    s4:kdc: Fix ticket encryption types memory leak
    
    sdb_entry_free was not releasing memory for s->etypes->val.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15812
    
    Signed-off-by: Ivan Korytov <[email protected]>
    Reviewed-by: Jennifer Sutton <[email protected]>
    Reviewed-by: Douglas Bagnall <[email protected]>

commit a97aad91878f693bd854b9483592811ac883b356
Author: Ivan Korytov <[email protected]>
Date:   Fri Feb 21 10:02:48 2025 +0300

    s4:kdc: Fix memory leak for unused keys in TGT
    
    Length of key list was reduced to one but unused keys were not deallocated 
before changing the length.
    As such, free_sdb_entry/sdb_keys_free function could not release unused 
keys indexed from 1 onwards on entry deallocation.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15712
    
    Signed-off-by: Ivan Korytov <[email protected]>
    Reviewed-by: Jennifer Sutton <[email protected]>
    Reviewed-by: Douglas Bagnall <[email protected]>

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

Summary of changes:
 source4/kdc/db-glue.c                      | 11 ++++++++++
 source4/kdc/sdb.c                          |  4 ++++
 source4/kdc/wdc-samba4.c                   |  7 ++-----
 third_party/heimdal/cf/resolv.m4           |  4 ++--
 third_party/heimdal/kdc/krb5tgs.c          |  5 +++++
 third_party/heimdal/lib/base/config_file.c | 33 +++++++++++++++++-------------
 third_party/heimdal/lib/gssapi/Makefile.am |  1 +
 third_party/heimdal/lib/krb5/Makefile.am   |  2 ++
 third_party/heimdal/lib/roken/Makefile.am  |  1 +
 9 files changed, 47 insertions(+), 21 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/kdc/db-glue.c b/source4/kdc/db-glue.c
index 90cfe006043..98b90e3637e 100644
--- a/source4/kdc/db-glue.c
+++ b/source4/kdc/db-glue.c
@@ -1844,6 +1844,8 @@ static krb5_error_code 
samba_kdc_message2entry(krb5_context context,
                 */
 #ifdef SAMBA4_USES_HEIMDAL
                if (is_krbtgt) {
+                       unsigned int i = 0;
+
                        /*
                         * The krbtgt account, having no reason to
                         * issue tickets encrypted in weaker keys,
@@ -1875,11 +1877,20 @@ static krb5_error_code 
samba_kdc_message2entry(krb5_context context,
                         * management.
                         */
 
+                       for (i = 1; i < entry->keys.len; i++) {
+                               sdb_key_free(&entry->keys.val[i]);
+                       }
                        entry->keys.len = 1;
                        if (entry->etypes != NULL) {
                                entry->etypes->len = MIN(entry->etypes->len, 1);
                        }
+                       for (i = 1; i < entry->old_keys.len; i++) {
+                               sdb_key_free(&entry->old_keys.val[i]);
+                       }
                        entry->old_keys.len = MIN(entry->old_keys.len, 1);
+                       for (i = 1; i < entry->older_keys.len; i++) {
+                               sdb_key_free(&entry->older_keys.val[i]);
+                       }
                        entry->older_keys.len = MIN(entry->older_keys.len, 1);
                }
 #endif
diff --git a/source4/kdc/sdb.c b/source4/kdc/sdb.c
index 75f96bbb338..3913954be0c 100644
--- a/source4/kdc/sdb.c
+++ b/source4/kdc/sdb.c
@@ -82,6 +82,10 @@ void sdb_entry_free(struct sdb_entry *s)
        krb5_free_principal(NULL, s->principal);
 
        sdb_keys_free(&s->keys);
+
+       if (s->etypes != NULL) {
+               SAFE_FREE(s->etypes->val);
+       }
        SAFE_FREE(s->etypes);
        sdb_keys_free(&s->old_keys);
        sdb_keys_free(&s->older_keys);
diff --git a/source4/kdc/wdc-samba4.c b/source4/kdc/wdc-samba4.c
index 0741c0878af..9d464a70560 100644
--- a/source4/kdc/wdc-samba4.c
+++ b/source4/kdc/wdc-samba4.c
@@ -737,12 +737,9 @@ static krb5_error_code samba_wdc_finalize_reply(void *priv,
                md.padata_type = KRB5_PADATA_SUPPORTED_ETYPES;
 
                ret = kdc_request_add_encrypted_padata(r, &md);
+               krb5_data_free(&md.padata_value);
                if (ret != 0) {
-                       /*
-                        * So we do not leak the allocated
-                        * memory on md in the error case
-                        */
-                       krb5_data_free(&md.padata_value);
+                       return ret;
                }
        }
 
diff --git a/third_party/heimdal/cf/resolv.m4 b/third_party/heimdal/cf/resolv.m4
index 49c868ab0ec..62949727589 100644
--- a/third_party/heimdal/cf/resolv.m4
+++ b/third_party/heimdal/cf/resolv.m4
@@ -73,13 +73,13 @@ AC_FIND_FUNC(res_ndestroy, resolv,
 ],
 [0])
 
-AC_FIND_FUNC_NO_LIBS(dns_search,,
+AC_FIND_FUNC(dns_search, resolv,
 [
 #ifdef HAVE_DNS_H
 #include <dns.h>
 #endif
 ],
-[0,0,0,0,0,0,0,0])
+[0])
 
 
 AC_FIND_FUNC(dn_expand, resolv,
diff --git a/third_party/heimdal/kdc/krb5tgs.c 
b/third_party/heimdal/kdc/krb5tgs.c
index f8fe63d88d7..07fdcca3970 100644
--- a/third_party/heimdal/kdc/krb5tgs.c
+++ b/third_party/heimdal/kdc/krb5tgs.c
@@ -2289,6 +2289,11 @@ out:
     free(csec);
     free(cusec);
 
+    if (r->ek.encrypted_pa_data) {
+       free_METHOD_DATA(r->ek.encrypted_pa_data);
+       free(r->ek.encrypted_pa_data);
+    }
+
     free_TGS_REP(&r->rep);
     free_TransitedEncoding(&r->et.transited);
     free(r->et.starttime);
diff --git a/third_party/heimdal/lib/base/config_file.c 
b/third_party/heimdal/lib/base/config_file.c
index b1675ea5f14..7ea7a99cacf 100644
--- a/third_party/heimdal/lib/base/config_file.c
+++ b/third_party/heimdal/lib/base/config_file.c
@@ -312,6 +312,11 @@ parse_plist_config(heim_context context, const char *path, 
heim_config_section *
     CFRelease(url);
     if (s == NULL) {
         heim_clear_error_message(context);
+       if (path[0] != '/') {
+           char cwd[PATH_MAX];
+           if (getcwd(cwd, sizeof(cwd)) == NULL)
+               return errno;
+       }
         return ENOMEM;
     }
 
@@ -571,6 +576,7 @@ heim_config_parse_file_multi(heim_context context,
 {
     const char *str;
     char *newfname = NULL;
+    char *exp_fname = NULL;
     unsigned lineno = 0;
     heim_error_code ret = 0;
     struct fileptr f;
@@ -603,6 +609,19 @@ heim_config_parse_file_multi(heim_context context,
         fname = newfname;
     }
 
+    /*
+     * Note that heim_config_parse_dir_multi() doesn't want tokens
+     * expanded here, but it happens to limit the names of files to
+     * include such that there can be no tokens to expand.  Don't
+     * add token expansion for tokens using _, say.
+     */
+    ret = heim_expand_path_tokens(context, fname, 1, &exp_fname, NULL);
+    if (ret)
+       goto out;
+    free(newfname);
+    fname = newfname = exp_fname;
+
+
     if (is_plist_file(fname)) {
 #if defined(HAVE_FRAMEWORK_COREFOUNDATION)
         ret = parse_plist_config(context, fname, res);
@@ -618,20 +637,6 @@ heim_config_parse_file_multi(heim_context context,
        goto out;
 #endif
     } else {
-       char *exp_fname = NULL;
-
-        /*
-         * Note that heim_config_parse_dir_multi() doesn't want tokens
-         * expanded here, but it happens to limit the names of files to
-         * include such that there can be no tokens to expand.  Don't
-         * add token expansion for tokens using _, say.
-         */
-        ret = heim_expand_path_tokens(context, fname, 1, &exp_fname, NULL);
-        if (ret)
-            goto out;
-       free(newfname);
-        fname = newfname = exp_fname;
-
         f.context = context;
         f.f = fopen(fname, "r");
         f.s = NULL;
diff --git a/third_party/heimdal/lib/gssapi/Makefile.am 
b/third_party/heimdal/lib/gssapi/Makefile.am
index 3254866dced..db967e58663 100644
--- a/third_party/heimdal/lib/gssapi/Makefile.am
+++ b/third_party/heimdal/lib/gssapi/Makefile.am
@@ -403,6 +403,7 @@ LDADD = libgssapi.la \
        $(top_builddir)/lib/krb5/libkrb5.la \
        $(LIB_roken)
 
+test_names_LDFLAGS = -lresolv
 test_names_LDADD = $(LDADD) $(top_builddir)/lib/asn1/libasn1.la
 test_context_LDADD = $(LDADD) $(top_builddir)/lib/asn1/libasn1.la 
$(top_builddir)/lib/wind/libwind.la
 
diff --git a/third_party/heimdal/lib/krb5/Makefile.am 
b/third_party/heimdal/lib/krb5/Makefile.am
index ecce461dd89..e22cfe87ce2 100644
--- a/third_party/heimdal/lib/krb5/Makefile.am
+++ b/third_party/heimdal/lib/krb5/Makefile.am
@@ -330,6 +330,8 @@ test_rfc3961_LDADD =                                \
        $(LIB_hcrypto)                          \
        $(LIB_roken)
 
+test_plugin_LDFLAGS = -lresolv
+
 if DEVELOPER_MODE
 headerdeps = $(dist_libkrb5_la_SOURCES)
 endif
diff --git a/third_party/heimdal/lib/roken/Makefile.am 
b/third_party/heimdal/lib/roken/Makefile.am
index 1f530c7aee5..8350d70348d 100644
--- a/third_party/heimdal/lib/roken/Makefile.am
+++ b/third_party/heimdal/lib/roken/Makefile.am
@@ -54,6 +54,7 @@ libtest_la_CFLAGS = -DTEST_SNPRINTF -DTEST_STRPFTIME
 
 parse_reply_test_SOURCES = parse_reply-test.c resolve.c
 parse_reply_test_CFLAGS  = -DTEST_RESOLVE
+parse_reply_test_LDFLAGS = -lresolv
 
 test_readenv_SOURCES = test-readenv.c test-mem.c
 test_auxval_SOURCES = test-auxval.c


-- 
Samba Shared Repository

Reply via email to