diff --git a/winsup/cygserver/transport_pipes.cc b/winsup/cygserver/transport_pipes.cc index 5b5a017c9..7a43d8da0 100644 --- a/winsup/cygserver/transport_pipes.cc +++ b/winsup/cygserver/transport_pipes.cc @@ -29,8 +29,13 @@ #define debug_printf if (DEBUG) printf #endif +//SECURITY_DESCRIPTOR transport_layer_pipes::sd; +//SECURITY_ATTRIBUTES transport_layer_pipes::sec_none_nih, transport_layer_pipes::sec_all_nih; +//bool transport_layer_pipes::inited = false; + transport_layer_pipes::transport_layer_pipes (HANDLE new_pipe) { + inited = false; //FIXME: allow inited, sd, all_nih_.. to be static members pipe = new_pipe; if (inited != true) init_security(); @@ -38,13 +43,13 @@ transport_layer_pipes::transport_layer_pipes (HANDLE new_pipe) transport_layer_pipes::transport_layer_pipes () { + inited = false; pipe = NULL; strcpy(pipe_name, "\\\\.\\pipe\\cygwin_lpc"); if (inited != true) init_security(); } - void transport_layer_pipes::init_security() { diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 7a8838dce..48a40cd73 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,11 @@ +2002-03-05 Robert Collins + + * cygserver_transport_pipes.cc (transport_layer_pipes::transport_layer_pipes): + Always init - until static members work correctly. + * shm.cc (shmget): Initialize the security descriptor - thanks Corinna! + * include/sys/ipc.h: Make the ipc control constants partitioned off from the sem + control constants. + 2002-03-04 Christian Lestrade * include/sys/termios.h: Define _POSIX_VDISABLE. Define CCEQ macro. diff --git a/winsup/cygwin/cygserver_transport_pipes.cc b/winsup/cygwin/cygserver_transport_pipes.cc index 5b5a017c9..7a43d8da0 100755 --- a/winsup/cygwin/cygserver_transport_pipes.cc +++ b/winsup/cygwin/cygserver_transport_pipes.cc @@ -29,8 +29,13 @@ #define debug_printf if (DEBUG) printf #endif +//SECURITY_DESCRIPTOR transport_layer_pipes::sd; +//SECURITY_ATTRIBUTES transport_layer_pipes::sec_none_nih, transport_layer_pipes::sec_all_nih; +//bool transport_layer_pipes::inited = false; + transport_layer_pipes::transport_layer_pipes (HANDLE new_pipe) { + inited = false; //FIXME: allow inited, sd, all_nih_.. to be static members pipe = new_pipe; if (inited != true) init_security(); @@ -38,13 +43,13 @@ transport_layer_pipes::transport_layer_pipes (HANDLE new_pipe) transport_layer_pipes::transport_layer_pipes () { + inited = false; pipe = NULL; strcpy(pipe_name, "\\\\.\\pipe\\cygwin_lpc"); if (inited != true) init_security(); } - void transport_layer_pipes::init_security() { diff --git a/winsup/cygwin/include/sys/ipc.h b/winsup/cygwin/include/sys/ipc.h index 8ddec6d50..c718a173a 100644 --- a/winsup/cygwin/include/sys/ipc.h +++ b/winsup/cygwin/include/sys/ipc.h @@ -39,9 +39,10 @@ struct ipc_perm { /* this is a value that will _never_ be a valid key from ftok */ #define IPC_PRIVATE -2 -#define IPC_RMID 0x0003 -#define IPC_SET 0x0002 -#define IPC_STAT 0x0001 +/* ctl commands 1000-1fff is ipc reserved */ +#define IPC_RMID 0x1003 +#define IPC_SET 0x1002 +#define IPC_STAT 0x1001 key_t ftok(const char *, int); diff --git a/winsup/cygwin/shm.cc b/winsup/cygwin/shm.cc index 883c15074..0c65d7724 100644 --- a/winsup/cygwin/shm.cc +++ b/winsup/cygwin/shm.cc @@ -460,6 +460,8 @@ shmget (key_t key, size_t size, int shmflg) char sd_buf[4096]; PSECURITY_DESCRIPTOR psd = (PSECURITY_DESCRIPTOR) sd_buf; /* create a sd for our open requests based on shmflag & 0x01ff */ + InitializeSecurityDescriptor (psd, + SECURITY_DESCRIPTOR_REVISION); psd = alloc_sd (getuid (), getgid (), cygheap->user.logsrv (), shmflg & 0x01ff, psd, &sd_size);