The branch, v4-4-test has been updated
       via  a2353be s3-winbind: Fix memory leak with each cached credential 
login
      from  8bac275 libutil: Support systemd 230

https://git.samba.org/?p=samba.git;a=shortlog;h=v4-4-test


- Log -----------------------------------------------------------------
commit a2353bebe784505dad6f0b1f7c3f3d375b98ee0c
Author: Andreas Schneider <[email protected]>
Date:   Wed Jun 29 13:38:19 2016 +0200

    s3-winbind: Fix memory leak with each cached credential login
    
    When we allow offline logon and have a lot of logins, windbind will leak
    4k of memory which each log in. On systems with heavy load this can grow
    quickly and the OOM killer will kill Winbind.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=11999
    
    Signed-off-by: Andreas Schneider <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    
    Autobuild-User(master): Andreas Schneider <[email protected]>
    Autobuild-Date(master): Wed Jun 29 19:03:53 CEST 2016 on sn-devel-144
    
    (cherry picked from commit 826f61960ec74deedc9d556a3b8fe04d9178dcd8)
    
    Autobuild-User(v4-4-test): Karolin Seeger <[email protected]>
    Autobuild-Date(v4-4-test): Mon Jul  4 13:04:53 CEST 2016 on sn-devel-144

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

Summary of changes:
 source3/winbindd/winbindd_cache.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/winbindd/winbindd_cache.c 
b/source3/winbindd/winbindd_cache.c
index cf3ed71..5dd9f4f 100644
--- a/source3/winbindd/winbindd_cache.c
+++ b/source3/winbindd/winbindd_cache.c
@@ -3471,7 +3471,7 @@ NTSTATUS wcache_remove_oldest_cached_creds(struct 
winbindd_domain *domain, const
        struct winbind_cache *cache = get_cache(domain);
        NTSTATUS status;
        int ret;
-       struct cred_list *cred, *oldest = NULL;
+       struct cred_list *cred, *next, *oldest = NULL;
 
        if (!cache->tdb) {
                return NT_STATUS_INTERNAL_DB_ERROR;
@@ -3540,7 +3540,11 @@ NTSTATUS wcache_remove_oldest_cached_creds(struct 
winbindd_domain *domain, const
                status = NT_STATUS_UNSUCCESSFUL;
        }
 done:
-       SAFE_FREE(wcache_cred_list);
+       for (cred = wcache_cred_list; cred; cred = next) {
+               next = cred->next;
+               DLIST_REMOVE(wcache_cred_list, cred);
+               SAFE_FREE(cred);
+       }
        SAFE_FREE(oldest);
 
        return status;


-- 
Samba Shared Repository

Reply via email to