chiark / gitweb /
collect: realloc buffer, if needed
[elogind.git] / extras / collect / collect.c
index 0a852f2db239b2d4050a3ec3b90371c273ddf3ee..feb0e7576871551e6e5984c32a0e43d51a79b9dc 100644 (file)
@@ -271,7 +271,11 @@ static int missing(int fd)
                if (him->state == STATE_NONE) {
                        ret++;
                } else {
-                       sprintf(buf, "%s ", him->name);
+                       while (strlen(him->name)+1 >= bufsize) {
+                               bufsize = bufsize << 1;
+                               buf = realloc(buf, bufsize);
+                       }
+                       snprintf(buf, strlen(him->name)+2, "%s ", him->name);
                        write(fd, buf, strlen(buf));
                }
        }