chiark / gitweb /
udevadm-hwdb: avoid leak in error path
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 3 Apr 2013 20:48:46 +0000 (16:48 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 5 Apr 2013 02:46:19 +0000 (22:46 -0400)
src/udev/udevadm-hwdb.c

index a2df291a40643bdcd5b2acf1c3b0c105a22c3f0b..1e80b0d611c573b0a4098044195f497b1282d8fd 100644 (file)
@@ -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: