Skip to content

Commit deac275

Browse files
committed
fix memory leak when using service parents
1 parent 825e8f5 commit deac275

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/naemon/objects_service.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ int init_objects_service(int elems)
2525
}
2626

2727
/* destroy a single service object, set truncate_lists to TRUE when lists should be simply emptied instead of removing item by item.
28-
* Enable truncate_list when removing all objects and disble when removing a specific one. */
28+
* Enable truncate_list when removing all objects and disable when removing a specific one. */
2929
void destroy_objects_service(int truncate_lists)
3030
{
3131
unsigned int i;
@@ -273,6 +273,7 @@ void destroy_service(service *this_service, int truncate_lists)
273273
struct contactgroupsmember *this_contactgroupsmember, *next_contactgroupsmember;
274274
struct contactsmember *this_contactsmember, *next_contactsmember;
275275
struct customvariablesmember *this_customvariablesmember, *next_customvariablesmember;
276+
struct servicesmember *this_servicesmember, *next_servicesmember;
276277
struct objectlist *slavelist;
277278

278279
if (!this_service)
@@ -304,6 +305,14 @@ void destroy_service(service *this_service, int truncate_lists)
304305
this_customvariablesmember = next_customvariablesmember;
305306
}
306307

308+
/* free memory for service parents */
309+
this_servicesmember = this_service->parents;
310+
while (this_servicesmember != NULL) {
311+
next_servicesmember = this_servicesmember->next;
312+
nm_free(this_servicesmember);
313+
this_servicesmember = next_servicesmember;
314+
}
315+
307316
/* free memory for service groups */
308317
if(!truncate_lists) {
309318
/* remove them one by one */

src/naemon/xodtemplate.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,7 @@ static void xodtemplate_free_memory(void)
460460
nm_free(this_service->icon_image_alt);
461461
nm_free(this_service->hostgroup_name);
462462
nm_free(this_service->service_description);
463+
nm_free(this_service->parents);
463464
}
464465
nm_free(this_service);
465466
}

0 commit comments

Comments
 (0)