From 0a0a45e22a1f97ac834f757b09fef4b985cee99d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 26 Sep 2003 08:45:24 +0000 Subject: [PATCH] * spawn.cc (spawn_guts): Set errno to E2BIG if command line is longer than CreateProcess allows (32K). --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/spawn.cc | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 0a2fff398..b0c3d7540 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2003-09-26 Corinna Vinschen + + * spawn.cc (spawn_guts): Set errno to E2BIG if command line is + longer than CreateProcess allows (32K). + 2003-09-25 Christopher Faylor * dtable.cc (build_fh_name): Return pointer to a 'nodevice' rather than diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 30d1dd749..ce61c22d5 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -587,6 +587,13 @@ spawn_guts (const char * prog_arg, const char *const *argv, else one_line.add ("", 1); MALLOC_CHECK; + + if (one_line.ix > 32767) + { + debug_printf ("Command line too long (>32K), return E2BIG"); + set_errno (E2BIG); + return -1; + } } char *envblock;