chiark / gitweb /
udev: fix two trivial memleaks in error path
[elogind.git] / src / udev / collect / collect.c
index f95ee23b7596d62ad3f525359e7de2dc7a38e854..1346f27f91be55190f80ee6e5a0308eb47314082 100644 (file)
@@ -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 {