From 0c376c3ee726ba0c61f5537738041b5fe3d6e805 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Sat, 24 Jan 1998 12:26:17 +0000 Subject: Fix for memory leak in loadparm.c - donated by Branko Cibej I checked this out and it looks ok - the bzero() in init_service() was overwriting the pointers pservice->szService and pservice->copymap that should have been freed in copy_service() the line later. This fix frees pservice->szService and pservice->copymap inside free_service() and sets them to zero so they won't be freed again. Jeremy. (This used to be commit 0bcb00e2bad999df859fdff59ce720d34de9b1ad) --- source3/param/loadparm.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index ac0f932fae..ad05b756aa 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -1074,9 +1074,16 @@ static void free_service(service *pservice) if (!pservice) return; + string_free(&pservice->szService); + if (pservice->copymap) + { + free(pservice->copymap); + pservice->copymap = NULL; + } + for (i=0;parm_table[i].label;i++) if ((parm_table[i].type == P_STRING || - parm_table[i].type == P_STRING) && + parm_table[i].type == P_USTRING) && parm_table[i].class == P_LOCAL) string_free((char **)(((char *)pservice) + PTR_DIFF(parm_table[i].ptr,&sDefault))); } -- cgit