Turning pinfo security on
Pierre A. Humblet
pierre@phumblet.no-ip.org
Sat Sep 27 02:18:00 GMT 2003
Following Chris' new signal handling approach and the previous
patch "Giving access to pinfo after seteuid and exec", we can
now turn pinfo security on.
It's just a matter of removing the FILE_MAP_WRITE permission for
Everybody, and a couple of useless PID_MAP_WRITE in pinfo constructors.
I have left the PID_MAP_WRITE in the winpids constructors for now,
they will be removed later.
Pierre
2003-09-26 Pierre Humblet <pierre.humblet@ieee.org>
* pinfo.cc (pinfo::init): Do not give FILE_MAP_WRITE access to Everybody.
* exceptions.cc (sig_handle_tty_stop): Do not create pinfo parent with
PID_MAP_WRITE.
* fhandler_process.cc (fhandler_process::fill_filebuf): Ditto for pinfo p.
* signal.cc (kill_worker): Ditto for pinfo dest.
-------------- next part --------------
Index: pinfo.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/pinfo.cc,v
retrieving revision 1.89
diff -u -p -r1.89 pinfo.cc
--- pinfo.cc 27 Sep 2003 01:58:23 -0000 1.89
+++ pinfo.cc 27 Sep 2003 02:11:08 -0000
@@ -170,7 +170,7 @@ pinfo::init (pid_t n, DWORD flag, HANDLE
char sa_buf[1024];
PSECURITY_ATTRIBUTES sec_attribs =
sec_user_nih (sa_buf, cygheap->user.sid(), well_known_world_sid,
- FILE_MAP_READ | FILE_MAP_WRITE); /* FIXME */
+ FILE_MAP_READ);
h = CreateFileMapping (INVALID_HANDLE_VALUE, sec_attribs,
PAGE_READWRITE, 0, mapsize, mapname);
created = h && GetLastError () != ERROR_ALREADY_EXISTS;
Index: exceptions.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/exceptions.cc,v
retrieving revision 1.170
diff -u -p -r1.170 exceptions.cc
--- exceptions.cc 25 Sep 2003 00:37:16 -0000 1.170
+++ exceptions.cc 27 Sep 2003 02:11:11 -0000
@@ -616,7 +616,7 @@ sig_handle_tty_stop (int sig)
its list of subprocesses. */
if (my_parent_is_alive ())
{
- pinfo parent (myself->ppid, PID_MAP_RW);
+ pinfo parent (myself->ppid);
if (ISSTATE (parent, PID_NOCLDSTOP))
sig_send (parent, SIGCHLD);
}
Index: fhandler_process.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/fhandler_process.cc,v
retrieving revision 1.38
diff -u -p -r1.38 fhandler_process.cc
--- fhandler_process.cc 25 Sep 2003 00:37:16 -0000 1.38
+++ fhandler_process.cc 27 Sep 2003 02:11:12 -0000
@@ -245,8 +245,7 @@ out:
bool
fhandler_process::fill_filebuf ()
{
- pinfo p (pid, PID_MAP_RW); // PID_MAP_RW for cmdline since it
- // needs to signal the other process
+ pinfo p (pid);
if (!p)
{
Index: signal.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/signal.cc,v
retrieving revision 1.52
diff -u -p -r1.52 signal.cc
--- signal.cc 25 Sep 2003 03:51:51 -0000 1.52
+++ signal.cc 27 Sep 2003 02:11:12 -0000
@@ -173,7 +173,7 @@ kill_worker (pid_t pid, int sig)
sig_dispatch_pending ();
int res = 0;
- pinfo dest (pid, PID_MAP_RW);
+ pinfo dest (pid);
BOOL sendSIGCONT;
if (!dest)
More information about the Cygwin-patches
mailing list