summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2012-03-29 17:34:55 +0000
committerChristopher Faylor <me@cgf.cx>2012-03-29 17:34:55 +0000
commitd46ed263afc680ce6a7f84114a3014b84e447987 (patch)
treeb6eccf83810654d87686da9d0e863ed050699515
parent60ecc3d68b188766e53dd314b40a0eb1192425ae (diff)
downloadcygnal-d46ed263afc680ce6a7f84114a3014b84e447987.tar.gz
cygnal-d46ed263afc680ce6a7f84114a3014b84e447987.tar.bz2
cygnal-d46ed263afc680ce6a7f84114a3014b84e447987.zip
* fhandler_console.cc (fhandler_console::set_unit): Don't succeed unless we are
opening a console actually associated with this process.
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/fhandler_console.cc8
2 files changed, 13 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 47001a029..bff0e57f6 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,6 +1,11 @@
+2012-03-29 Christopher Faylor <me.cygwin2012@cgf.cx>
+
+ * fhandler_console.cc (fhandler_console::set_unit): Don't succeed
+ unless we are opening a console actually associated with this process.
+
2012-03-29 Corinna Vinschen <corinna@vinschen.de>
- * sec_acl.cc (acl32): Fix potnetial crash if build_fh_name returns NULL.
+ * sec_acl.cc (acl32): Fix potential crash if build_fh_name returns NULL.
2012-03-29 Christopher Faylor <me.cygwin2012@cgf.cx>
diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc
index a3553a728..5be7111ff 100644
--- a/winsup/cygwin/fhandler_console.cc
+++ b/winsup/cygwin/fhandler_console.cc
@@ -135,6 +135,7 @@ fhandler_console::set_unit ()
bool created;
fh_devices devset;
lock_ttys here;
+ HWND me;
if (shared_console_info)
{
fh_devices this_unit = dev ();
@@ -146,9 +147,14 @@ fhandler_console::set_unit ()
|| this_unit == FH_TTY) ?
shared_unit : FH_ERROR;
}
+ else if ((myself->ctty != -1 && !iscons_dev (myself->ctty))
+ || !(me = GetConsoleWindow ()))
+ {
+ created = false;
+ devset = FH_ERROR;
+ }
else
{
- HWND me = GetConsoleWindow ();
created = true;
shared_console_info = open_shared_console (me, cygheap->console_h, created);
ProtectHandleINH (cygheap->console_h);