summaryrefslogtreecommitdiff
path: root/src/udev/udevadm-hwdb.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-04-03 16:48:46 -0400
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-04-04 22:46:19 -0400
commitff03aed06a42235a87a3d33e7d812be1e9c8161d (patch)
treee40460f39797890e9c02c9e9fbc9e78828de85f5 /src/udev/udevadm-hwdb.c
parent5483a18693871e67cff6d85e43ca843cd976d019 (diff)
udevadm-hwdb: avoid leak in error path
Diffstat (limited to 'src/udev/udevadm-hwdb.c')
-rw-r--r--src/udev/udevadm-hwdb.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c
index a2df291a40..1e80b0d611 100644
--- a/src/udev/udevadm-hwdb.c
+++ b/src/udev/udevadm-hwdb.c
@@ -176,11 +176,11 @@ static int trie_insert(struct trie *trie, struct trie_node *node, const char *se
const char *key, const char *value) {
size_t i = 0;
int err = 0;
+ struct trie_node _cleanup_free_ *child = NULL;
for (;;) {
size_t p;
uint8_t c;
- struct trie_node *child;
for (p = 0; (c = trie->strings->buf[node->prefix_off + p]); p++) {
char *s;
@@ -254,6 +254,7 @@ static int trie_insert(struct trie *trie, struct trie_node *node, const char *se
}
node = child;
+ child = NULL; /* avoid cleanup */
i++;
}
out: