From 5f6f9a1beab327be2728d44c1996408176f6800e Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Wed, 11 May 2016 09:18:14 +0100 Subject: Wrapper: allocate new environment dynamically Otherwise, if third-party plugins extend newenviron by more than 3 entries, we could overflow the array. It seems unlikely that any third-party plugin manipulates newenviron in practice, so this is mostly theoretical. Just in case, I have deliberately avoided using "i" as the variable name, so that any third-party plugin that was manipulating newenviron directly will now result in the wrapper failing to compile. I have not assumed that realloc(NULL, ...) works as an equivalent of malloc(...), in case there are still operating systems where that doesn't work. --- IkiWiki/Receive.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'IkiWiki/Receive.pm') diff --git a/IkiWiki/Receive.pm b/IkiWiki/Receive.pm index 5908e09f9..332ba7c2c 100644 --- a/IkiWiki/Receive.pm +++ b/IkiWiki/Receive.pm @@ -46,8 +46,8 @@ EOF while (read(0, &buf, 256) != 0) {} exit(0); } - asprintf(&s, "CALLER_UID=%i", u); - newenviron[i++]=s; + asprintf(&s, "%i", u); + addenv("CALLER_UID", s); } EOF return $ret; -- cgit v1.2.3