summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Haubenwallner <michael.haubenwallner@ssi-schaefer.com>2019-08-07 10:51:16 +0200
committerCorinna Vinschen <corinna@vinschen.de>2019-08-07 11:08:01 +0200
commit472fbb8b97d35fc636be059bf733d390b0671f4d (patch)
tree4a4d1ef28ac5b110660fde7836040c4ab5e276ce
parent98669a24760a84bfef498fedeef7fa7ecc518e6c (diff)
downloadcygnal-472fbb8b97d35fc636be059bf733d390b0671f4d.tar.gz
cygnal-472fbb8b97d35fc636be059bf733d390b0671f4d.tar.bz2
cygnal-472fbb8b97d35fc636be059bf733d390b0671f4d.zip
Cygwin: build_env: fix off-by-one bug when re-adding PATH
Adding default winvar 'PATH=C:\cygwin64\binZ' to an environment that is already allocated for 'SYSTEMROOT=ZWINDIR=Z', we need to count that trailing (Z)ero as well. Otherwise we trigger this assertion failure: $ /bin/env -i SYSTEMROOT= WINDIR= /bin/env assertion "(s - envblock) <= tl" failed: file "/home/corinna/src/cygwin/cygwin-3.0.7/cygwin-3.0.7-1.x86_64/src/newlib-cygwin/winsup/cygwin/environ.cc", line 1302, function: char** build_env(const char* const*, WCHAR*&, int&, bool, HANDLE) Aborted (core dumped)
-rw-r--r--winsup/cygwin/environ.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc
index 124842734..8fa01b2d5 100644
--- a/winsup/cygwin/environ.cc
+++ b/winsup/cygwin/environ.cc
@@ -1295,7 +1295,7 @@ build_env (const char * const *envp, PWCHAR &envblock, int &envc,
during execve. */
if (!saw_PATH)
{
- new_tl += cygheap->installation_dir.Length / sizeof (WCHAR) + 5;
+ new_tl += cygheap->installation_dir.Length / sizeof (WCHAR) + 5 + 1;
if (new_tl > tl)
tl = raise_envblock (new_tl, envblock, s);
s = wcpcpy (wcpcpy (s, L"PATH="),