]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/blobdiff - src/trackfds.h
trackfds.h: Fix invalid write if tracked_fds_count is 0.
[coloredstderr/coloredstderr.git] / src / trackfds.h
index 614b4bf8a0fb1d3181a57199133761339959f455..07cfaa11a5f444ef4f09ef7f11fad79a65ad799c 100644 (file)
@@ -105,15 +105,19 @@ static void init_from_environment(void) {
 static void update_environment(void) {
     /* An integer (32-bit) has at most 10 digits, + 1 for the comma after each
      * number. Bigger file descriptors (which shouldn't occur in reality) are
-     * truncated. */
-    char env[tracked_fds_count * (10 + 1) * sizeof(char)];
+     * skipped. */
+    char env[tracked_fds_count * (10 + 1) + 1 /* to fit '\0' */ ];
+    env[0] = 0;
+
     char *x = env;
 
     size_t i;
     for (i = 0; i < tracked_fds_count; i++) {
         int length = snprintf(x, 10 + 1, "%d", tracked_fds[i]);
-        if (length >= 10 + 1)
-            return;
+        if (length >= 10 + 1) {
+            /* Integer too bit to fit the buffer, skip it. */
+            continue;
+        }
 
         /* Write comma after number. */
         x += length;