From ef89eef77ee098a6828169a6d0d74128e236bcbd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 18 Jul 2013 19:36:55 -0400 Subject: [PATCH] udev: fix two trivial memleaks in error path Based-on-a-patch-by: Ian Stakenvicius --- src/udev/collect/collect.c | 6 +++--- src/udev/udevadm-hwdb.c | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c index f95ee23b7..1346f27f9 100644 --- a/src/udev/collect/collect.c +++ b/src/udev/collect/collect.c @@ -442,19 +442,19 @@ int main(int argc, char **argv) if (debug) fprintf(stderr, "ID %s: not in database\n", argv[i]); - him = malloc(sizeof (struct _mate)); + him = new(struct _mate, 1); if (!him) { ret = ENOMEM; goto out; } - him->name = malloc(strlen(argv[i]) + 1); + him->name = strdup(argv[i]); if (!him->name) { + free(him); ret = ENOMEM; goto out; } - strcpy(him->name, argv[i]); him->state = STATE_NONE; udev_list_node_append(&him->node, &bunch); } else { diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 4136b17be..d9dc73bfc 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -303,8 +303,10 @@ static int64_t trie_store_nodes(struct trie_f *trie, struct trie_node *node) { int64_t child_off; child_off = trie_store_nodes(trie, node->children[i].child); - if (child_off < 0) + if (child_off < 0) { + free(children); return child_off; + } children[i].c = node->children[i].c; children[i].child_off = htole64(child_off); } -- 2.30.2