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>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Wed Jun 29 19:03:53 CEST 2016 on sn-devel-144
(cherry picked from commit
826f61960ec74deedc9d556a3b8fe04d9178dcd8)
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;
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;