diff options
author | Michael Haubenwallner <michael.haubenwallner@ssi-schaefer.com> | 2019-08-07 10:51:16 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2019-08-07 11:08:01 +0200 |
commit | 472fbb8b97d35fc636be059bf733d390b0671f4d (patch) | |
tree | 4a4d1ef28ac5b110660fde7836040c4ab5e276ce | |
parent | 98669a24760a84bfef498fedeef7fa7ecc518e6c (diff) | |
download | cygnal-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.cc | 2 |
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="), |