From ee2d079d1bf85ddaa0e6e54c6a39437eae500f5a Mon Sep 17 00:00:00 2001 From: Brice Goglin Date: Tue, 11 Feb 2014 22:27:13 +0100 Subject: [PATCH] diff: fix memory leak when appending a "too complex" diff entry Found by Coverity Scan. --- src/diff.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/diff.c b/src/diff.c index e076118e..40cda642 100644 --- a/src/diff.c +++ b/src/diff.c @@ -76,14 +76,15 @@ static int hwloc_append_diff_obj_attr_string(hwloc_obj_t obj, hwloc_topology_diff_t *lastdiffp) { hwloc_topology_diff_t newdiff; - newdiff = malloc(sizeof(*newdiff)); - if (!newdiff) - return -1; if (obj->type == HWLOC_OBJ_MISC) /* TODO: add a custom level/depth for Misc */ return hwloc_append_diff_too_complex(obj, firstdiffp, lastdiffp); + newdiff = malloc(sizeof(*newdiff)); + if (!newdiff) + return -1; + newdiff->obj_attr.type = HWLOC_TOPOLOGY_DIFF_OBJ_ATTR; newdiff->obj_attr.obj_depth = obj->depth; newdiff->obj_attr.obj_index = obj->logical_index; @@ -104,14 +105,15 @@ static int hwloc_append_diff_obj_attr_uint64(hwloc_obj_t obj, hwloc_topology_diff_t *lastdiffp) { hwloc_topology_diff_t newdiff; - newdiff = malloc(sizeof(*newdiff)); - if (!newdiff) - return -1; if (obj->type == HWLOC_OBJ_MISC) /* TODO: add a custom level/depth for Misc */ return hwloc_append_diff_too_complex(obj, firstdiffp, lastdiffp); + newdiff = malloc(sizeof(*newdiff)); + if (!newdiff) + return -1; + newdiff->obj_attr.type = HWLOC_TOPOLOGY_DIFF_OBJ_ATTR; newdiff->obj_attr.obj_depth = obj->depth; newdiff->obj_attr.obj_index = obj->logical_index; -- 2.39.5