diff options
author | Christopher Faylor <me@cgf.cx> | 2005-09-16 19:58:12 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2005-09-16 19:58:12 +0000 |
commit | e4d981b9578d322d529b65aea55964f2249b5953 (patch) | |
tree | 542b700d1f1b17b69e3eda4bb8ffcb0ac72eb788 /winsup/cygwin/spawn.cc | |
parent | 541ea31352ecb1a189143bd7822672740292e34b (diff) | |
download | cygnal-e4d981b9578d322d529b65aea55964f2249b5953.tar.gz cygnal-e4d981b9578d322d529b65aea55964f2249b5953.tar.bz2 cygnal-e4d981b9578d322d529b65aea55964f2249b5953.zip |
* environ.cc (build_env): Clear envblock and return NULL on attempt to use env
var > 32K.
* spawn.cc (spawn_guts): Set E2BIG if build_env detects an error.
Diffstat (limited to 'winsup/cygwin/spawn.cc')
-rw-r--r-- | winsup/cygwin/spawn.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index ffafa8f7c..149a25999 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -624,6 +624,11 @@ spawn_guts (const char * prog_arg, const char *const *argv, cygheap->user.deimpersonate (); moreinfo->envp = build_env (envp, envblock, moreinfo->envc, real_path.iscygexec ()); + if (!moreinfo->envp || !envblock) + { + set_errno (E2BIG); + goto out; + } ciresrv.set (chtype, real_path.iscygexec ()); ciresrv.moreinfo = moreinfo; |