chiark / gitweb /
udev/collect: avoid initalizing memory twice
[elogind.git] / src / udev / collect / collect.c
index feae4bb6ba1ebd190f0326771f956fb65c30a7b8..6580a091e0a95890f0975b0131030a135e2d08cb 100644 (file)
@@ -93,7 +93,7 @@ static int prepare(char *dir, char *filename)
         if (stat(dir, &statbuf) < 0)
                 mkdir(dir, 0700);
 
-        sprintf(buf, "%s/%s", dir, filename);
+        snprintf(buf, sizeof(buf), "%s/%s", dir, filename);
 
         fd = open(buf,O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
         if (fd < 0)
@@ -139,12 +139,14 @@ static int checkout(int fd)
 
  restart:
         len = bufsize >> 1;
-        buf = calloc(1,bufsize + 1);
+        buf = malloc(bufsize + 1);
         if (!buf) {
                 fprintf(stderr, "Out of memory.\n");
                 return log_oom();
         }
         memset(buf, ' ', bufsize);
+        buf[bufsize] = '\0';
+
         ptr = buf + len;
         while ((read(fd, buf + len, len)) > 0) {
                 while (ptr && *ptr) {
@@ -213,7 +215,7 @@ static void invite(char *us)
         udev_list_node_foreach(him_node, &bunch) {
                 struct _mate *him = node_to_mate(him_node);
 
-                if (!strcmp(him->name, us)) {
+                if (streq(him->name, us)) {
                         him->state = STATE_CONFIRMED;
                         who = him;
                 }
@@ -241,7 +243,7 @@ static void reject(char *us)
         udev_list_node_foreach(him_node, &bunch) {
                 struct _mate *him = node_to_mate(him_node);
 
-                if (!strcmp(him->name, us)) {
+                if (streq(him->name, us)) {
                         him->state = STATE_NONE;
                         who = him;
                 }
@@ -414,7 +416,7 @@ int main(int argc, char **argv)
         if (debug)
                 fprintf(stderr, "Using checkpoint '%s'\n", checkpoint);
 
-        util_strscpyl(tmpdir, sizeof(tmpdir), "/run/udev/collect", NULL);
+        strscpyl(tmpdir, sizeof(tmpdir), "/run/udev/collect", NULL);
         fd = prepare(tmpdir, checkpoint);
         if (fd < 0) {
                 ret = 3;
@@ -434,7 +436,7 @@ int main(int argc, char **argv)
                 udev_list_node_foreach(him_node, &bunch) {
                         struct _mate *him = node_to_mate(him_node);
 
-                        if (!strcmp(him->name, argv[i]))
+                        if (streq(him->name, argv[i]))
                                 who = him;
                 }
                 if (!who) {