diff options
author | Simon McVittie <smcv@debian.org> | 2016-05-11 09:18:14 +0100 |
---|---|---|
committer | Simon McVittie <smcv@debian.org> | 2016-05-11 09:18:14 +0100 |
commit | 5f6f9a1beab327be2728d44c1996408176f6800e (patch) | |
tree | 2c9cda07a8776dea92bc12a4b80648132d4b0ae2 /IkiWiki/Receive.pm | |
parent | 062dbf1373dcf1646ef58400f011dc3b148aa862 (diff) | |
download | ikiwiki-5f6f9a1beab327be2728d44c1996408176f6800e.tar ikiwiki-5f6f9a1beab327be2728d44c1996408176f6800e.tar.gz |
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.
Diffstat (limited to 'IkiWiki/Receive.pm')
-rw-r--r-- | IkiWiki/Receive.pm | 4 |
1 files changed, 2 insertions, 2 deletions
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; |