X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=src%2Ftrackfds.h;h=07cfaa11a5f444ef4f09ef7f11fad79a65ad799c;hb=df4c9eab977217103184d91105f4b38ba956a06b;hp=614b4bf8a0fb1d3181a57199133761339959f455;hpb=96710bc3fa919e221338ef96686e80ba590d3b77;p=coloredstderr%2Fcoloredstderr.git diff --git a/src/trackfds.h b/src/trackfds.h index 614b4bf..07cfaa1 100644 --- a/src/trackfds.h +++ b/src/trackfds.h @@ -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;