From 686bf50bcd4ac12d2825dc9d18d6ca944f158eb5 Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Mon, 3 Jun 2013 04:28:43 +0200 Subject: [PATCH] trackfds.h: Handle overflow in update_environment(). --- src/trackfds.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/trackfds.h b/src/trackfds.h index 614b4bf..b26059d 100644 --- a/src/trackfds.h +++ b/src/trackfds.h @@ -105,15 +105,17 @@ 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. */ + * skipped. */ char env[tracked_fds_count * (10 + 1) * sizeof(char)]; 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; -- 2.45.2