]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch
Merge remote-tracking branch 'origin/next'
[ipfire-2.x.git] / src / patches / samba / samba-3.6.99-fix_memleak_winbind_cached_creds.patch
diff --git a/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch b/src/patches/samba/samba-3.6.99-fix_memleak_winbind_cached_creds.patch
deleted file mode 100644 (file)
index 6de8a21..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-From cf53bff0e8482e35068d8e894af5634a0a9b1399 Mon Sep 17 00:00:00 2001
-From: Andreas Schneider <asn@samba.org>
-Date: Wed, 29 Jun 2016 13:38:19 +0200
-Subject: [PATCH] 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 <asn@samba.org>
-Reviewed-by: Guenther Deschner <gd@samba.org>
----
- source3/winbindd/winbindd_cache.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c
-index 82c8087..2e983cd 100644
---- a/source3/winbindd/winbindd_cache.c
-+++ b/source3/winbindd/winbindd_cache.c
-@@ -3415,7 +3415,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;
-@@ -3484,7 +3484,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;
--- 
-2.9.0
-