summaryrefslogtreecommitdiff
path: root/winsup/cygwin/pinfo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/pinfo.cc')
-rw-r--r--winsup/cygwin/pinfo.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc
index 61ed29d1588..5409bb21e6b 100644
--- a/winsup/cygwin/pinfo.cc
+++ b/winsup/cygwin/pinfo.cc
@@ -92,7 +92,7 @@ pinfo_init (char **envp, int envc)
myself->pgid = myself->sid = myself->pid;
myself->ctty = -1;
myself->uid = ILLEGAL_UID;
-
+ myself->gid = UNKNOWN_GID;
environ_init (NULL, 0); /* call after myself has been set up */
}
@@ -141,6 +141,8 @@ pinfo::init (pid_t n, DWORD flag, HANDLE in_h)
}
int createit = flag & (PID_IN_USE | PID_EXECED);
+ DWORD access = FILE_MAP_READ
+ | (flag & (PID_IN_USE | PID_EXECED | PID_MAP_RW) ? FILE_MAP_WRITE : 0);
for (int i = 0; i < 10; i++)
{
int created;
@@ -160,7 +162,7 @@ pinfo::init (pid_t n, DWORD flag, HANDLE in_h)
}
else if (!createit)
{
- h = OpenFileMappingA (FILE_MAP_READ | FILE_MAP_WRITE, FALSE, mapname);
+ h = OpenFileMappingA (access, FALSE, mapname);
created = 0;
}
else
@@ -178,8 +180,7 @@ pinfo::init (pid_t n, DWORD flag, HANDLE in_h)
return;
}
- procinfo = (_pinfo *) MapViewOfFileEx (h, FILE_MAP_READ | FILE_MAP_WRITE,
- 0, 0, 0, mapaddr);
+ procinfo = (_pinfo *) MapViewOfFileEx (h, access, 0, 0, 0, mapaddr);
ProtectHandle1 (h, pinfo_shared_handle);
if ((procinfo->process_state & PID_INITIALIZING) && (flag & PID_NOREDIR)