Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-04-19 23:52:43 +0400
committerCorinna Vinschen <corinna@vinschen.de>2010-04-19 23:52:43 +0400
commitcc01c77f7e025825151435bf00a6dbeb44b137de (patch)
tree5324b48242c29a1e17e4c8f9386326f47bf15d29 /winsup/cygwin/tty.h
parent02a33ea774fed6feeeabe2779eef6739e094100e (diff)
* autoload.cc (GetNamedPipeClientProcessId): Define.
* fhandler.h (fhandler_tty_slave::fch_open_handles): Declare private. (fhandler_tty_slave::fch_close_handles): Ditto. (fhandler_tty_slave::cygserver_attach_tty): Drop declaration. (fhandler_tty_slave::fstat): Declare public. (fhandler_tty_slave::fchmod): Declare public. (fhandler_tty_slave::fchown): Declare public. (class fhandler_pty_master): Add master_ctl handle. (fhandler_pty_master::pty_master_thread): Declare public. * fhandler_termios.cc (fhandler_termios::tcinit): If the process is started from a non-Cygwin process, make it tty process group leader. * fhandler_tty.cc: Throughout accommodate additional security related arguments in calls to functions creating or opening objects. (close_maybe): Move to start of file to reuse it in other methods. (struct pipe_request): Define. (struct pipe_reply): Define. (fhandler_tty_slave::open): Throughout, try to open synchronization objects with MAXIMUM_ALLOWED permissions. Drop call to cygserver. Try to duplicate pipe handles via master_ctl pipe if duplicating directly doesn't work. (fhandler_tty_slave::cygserver_attach_tty): Remove. (fhandler_tty_slave::init): Close unused incoming pipe handle. (fhandler_pty_master::close): Send exit message to master control thread and close master_ctl handle. (fhandler_pty_master::pty_master_thread): New method, implementing the master control thread. (pty_master_thread): Static helper to start master control thread. (fhandler_pty_master::setup): Simplify creating pipe inheritance. Make sure we're the one creating the input_available_event. Add comment to explain why. Create master_ctl pipe and start master control thread. Close master_ctl handle in case of error. * security.cc (alloc_sd): Add code to handle tty objects. Add comments to explain what exactly is required. (get_object_sd): New function. (get_object_attribute): New function. (create_object_sd_from_attribute): New function. (set_object_sd): New function. (set_object_attribute): New function. (set_file_attribute): Change attribute type to mode_t. * security.h (set_file_attribute): Change attribute type to mode_t. (get_object_sd): Declare. (get_object_attribute): Declare. (create_object_sd_from_attribute): Declare. (set_object_sd): Declare. (set_object_attribute): Declare. * tty.cc (tty::slave_alive): Implement directly instead of via alive. (tty::exists): Open mutex handle with READ_CONTROL access. (tty::alive): Remove. (tty::open_output_mutex): Convert to inline method. (tty::open_input_mutex): Ditto. (tty::open_mutex): Take additional ACCESS_MASK parameter for the mutex open access mask. (tty::open_inuse): New method. (tty::create_inuse): Take PSECURITY_ATTRIBUTES parameter. Drop fmt name parameter. Always create TTY_SLAVE_ALIVE event. (tty::get_event): Take additional PSECURITY_ATTRIBUTES parameter for CreateEvent. * tty.h (class tty): Change declarations according to aforementioned changes. (tty::open_output_mutex): Implement as inline method. (tty::open_input_mutex): Ditto.
Diffstat (limited to 'winsup/cygwin/tty.h')
-rw-r--r--winsup/cygwin/tty.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/winsup/cygwin/tty.h b/winsup/cygwin/tty.h
index b4c02a411..630bdb048 100644
--- a/winsup/cygwin/tty.h
+++ b/winsup/cygwin/tty.h
@@ -1,6 +1,6 @@
/* tty.h: shared tty info for cygwin
- Copyright 2000, 2001, 2002, 2003, 2004, 2006 Red Hat, Inc.
+ Copyright 2000, 2001, 2002, 2003, 2004, 2006, 2009, 2010 Red Hat, Inc.
This file is part of Cygwin.
@@ -84,7 +84,8 @@ class fhandler_pty_master;
class tty: public tty_min
{
- HANDLE get_event (const char *fmt, BOOL manual_reset = FALSE)
+ HANDLE get_event (const char *fmt, PSECURITY_ATTRIBUTES sa,
+ BOOL manual_reset = FALSE);
__attribute__ ((regparm (3)));
public:
pid_t master_pid; /* PID of tty master process */
@@ -95,13 +96,14 @@ public:
bool was_opened; /* True if opened at least once. */
void init ();
- HANDLE create_inuse (const char *);
- bool alive (const char *fmt);
+ HANDLE open_inuse (ACCESS_MASK access);
+ HANDLE create_inuse (PSECURITY_ATTRIBUTES);
bool slave_alive ();
- bool master_alive ();
- HANDLE open_mutex (const char *mutex);
- HANDLE open_output_mutex ();
- HANDLE open_input_mutex ();
+ HANDLE open_mutex (const char *mutex, ACCESS_MASK access);
+ inline HANDLE open_output_mutex (ACCESS_MASK access)
+ { return open_mutex (OUTPUT_MUTEX, access); }
+ inline HANDLE open_input_mutex (ACCESS_MASK access)
+ { return open_mutex (INPUT_MUTEX, access); }
bool exists ();
void set_master_closed () {master_pid = -1;}
static void __stdcall create_master (int);