From 6f94526c1c02d187a31c028ee1a754b4ecbb98c9 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 6 Jul 2012 13:49:53 +0000 Subject: * fhandler_registry.cc (RegOpenUserClassesRoot): Only define when building against w32api headers. (RegOpenCurrentUser): Ditto. * fhandler_tty.cc (GetNamedPipeClientProcessId): Ditto. * ntdll.h (enum _PROCESSINFOCLASS): Add ProcessImageFileName. (RtlInitAnsiString): Declare. (RtlUnicodeStringToAnsiSize): Declare. * sched.cc (GetForegroundWindow): Ditto. * sec_helper.cc (SECURITY_NT_NON_UNIQUE): Define as SECURITY_NT_NON_UNIQUE_RID when building against w32api headers. (cygsid::get_sid): Use SECURITY_NT_NON_UNIQUE rather than SECURITY_NT_NON_UNIQUE_RID. (__sec_user): Use PISECURITY_DESCRIPTOR rather than PSECURITY_DESCRIPTOR to allow valid pointer arithmetic. (_recycler_sd): Ditto. (_everyone_sd): Ditto. --- winsup/cygwin/ChangeLog | 26 ++++++++++++++++++++++++++ winsup/cygwin/fhandler_registry.cc | 2 ++ winsup/cygwin/fhandler_tty.cc | 2 ++ winsup/cygwin/ntdll.h | 5 ++++- winsup/cygwin/sched.cc | 2 ++ winsup/cygwin/sec_helper.cc | 16 ++++++++++++---- 6 files changed, 48 insertions(+), 5 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index ebdbec00a..fd06947cc 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,29 @@ +2012-07-06 Corinna Vinschen + + * fhandler_registry.cc (RegOpenUserClassesRoot): Only define when + building against w32api headers. + (RegOpenCurrentUser): Ditto. + * fhandler_tty.cc (GetNamedPipeClientProcessId): Ditto. + * ntdll.h (enum _PROCESSINFOCLASS): Add ProcessImageFileName. + (RtlInitAnsiString): Declare. + (RtlUnicodeStringToAnsiSize): Declare. + * sched.cc (GetForegroundWindow): Ditto. + * sec_helper.cc (SECURITY_NT_NON_UNIQUE): Define as + SECURITY_NT_NON_UNIQUE_RID when building against w32api headers. + (cygsid::get_sid): Use SECURITY_NT_NON_UNIQUE rather than + SECURITY_NT_NON_UNIQUE_RID. + (__sec_user): Use PISECURITY_DESCRIPTOR rather than PSECURITY_DESCRIPTOR + to allow valid pointer arithmetic. + (_recycler_sd): Ditto. + (_everyone_sd): Ditto. + +2012-07-06 Corinna Vinschen + + * advapi32.cc (_ADVAPI32_): Drop definition. + * kernel32.cc (_KERNEL32_): Ditto. + * winlean.h: Add definitions required to use Mingw64 headers. + (FILE_SHARE_VALID_FLAGS): Drop definition. + 2012-07-06 Corinna Vinschen * winsup.h (_WIN32_WINNT): Define. Explain why. diff --git a/winsup/cygwin/fhandler_registry.cc b/winsup/cygwin/fhandler_registry.cc index 311eac3a6..787922962 100644 --- a/winsup/cygwin/fhandler_registry.cc +++ b/winsup/cygwin/fhandler_registry.cc @@ -77,10 +77,12 @@ static const HKEY registry_keys[] = static const int ROOT_KEY_COUNT = sizeof (registry_keys) / sizeof (HKEY); +#ifndef __MINGW64_VERSION_MAJOR extern "C" { LONG WINAPI RegOpenUserClassesRoot (HANDLE, DWORD, REGSAM, PHKEY); LONG WINAPI RegOpenCurrentUser (REGSAM, PHKEY); }; +#endif /* Make sure to access the correct per-user HKCR and HKCU hives, even if the current user is only impersonated in another user's session. */ diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 2331a0449..519558a3d 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -1482,7 +1482,9 @@ fhandler_pty_slave::fixup_after_exec () fixup_after_fork (NULL); } +#ifndef __MINGW64_VERSION_MAJOR extern "C" BOOL WINAPI GetNamedPipeClientProcessId (HANDLE, PULONG); +#endif /* This thread function handles the master control pipe. It waits for a client to connect. Then it checks if the client process has permissions diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h index c486a93c1..dda3c2d20 100644 --- a/winsup/cygwin/ntdll.h +++ b/winsup/cygwin/ntdll.h @@ -491,7 +491,8 @@ typedef enum _PROCESSINFOCLASS ProcessVmCounters = 3, ProcessTimes = 4, ProcessSessionInformation = 24, - ProcessWow64Information = 26 + ProcessWow64Information = 26, + ProcessImageFileName = 27 } PROCESSINFOCLASS; typedef struct _DEBUG_BUFFER @@ -1270,6 +1271,7 @@ extern "C" PBOOLEAN); PSID_IDENTIFIER_AUTHORITY NTAPI RtlIdentifierAuthoritySid (PSID); VOID NTAPI RtlInitEmptyUnicodeString (PUNICODE_STRING, PCWSTR, USHORT); + VOID NTAPI RtlInitAnsiString (PANSI_STRING, PCSTR); NTSTATUS NTAPI RtlInitializeSid (PSID, PSID_IDENTIFIER_AUTHORITY, UCHAR); VOID NTAPI RtlInitUnicodeString (PUNICODE_STRING, PCWSTR); NTSTATUS NTAPI RtlIntegerToUnicodeString (ULONG, ULONG, PUNICODE_STRING); @@ -1301,6 +1303,7 @@ extern "C" BOOLEAN); PUCHAR NTAPI RtlSubAuthorityCountSid (PSID); PULONG NTAPI RtlSubAuthoritySid (PSID, ULONG); + ULONG NTAPI RtlUnicodeStringToAnsiSize (PUNICODE_STRING); NTSTATUS NTAPI RtlUnicodeStringToAnsiString (PANSI_STRING, PUNICODE_STRING, BOOLEAN); NTSTATUS NTAPI RtlUnicodeStringToOemString (PANSI_STRING, PUNICODE_STRING, diff --git a/winsup/cygwin/sched.cc b/winsup/cygwin/sched.cc index 9c8aa0467..e990c996c 100644 --- a/winsup/cygwin/sched.cc +++ b/winsup/cygwin/sched.cc @@ -21,7 +21,9 @@ #include #include "registry.h" +#ifndef __MINGW64_VERSION_MAJOR extern "C" HWND WINAPI GetForegroundWindow(); +#endif /* Win32 priority to UNIX priority Mapping. For now, I'm just following the spec: any range of priorities is ok. diff --git a/winsup/cygwin/sec_helper.cc b/winsup/cygwin/sec_helper.cc index d44705b2f..0b505a7e8 100644 --- a/winsup/cygwin/sec_helper.cc +++ b/winsup/cygwin/sec_helper.cc @@ -25,6 +25,10 @@ details. */ #include "pwdgrp.h" #include "ntdll.h" +#ifndef __MINGW64_VERSION_MAJOR +#define SECURITY_NT_NON_UNIQUE SECURITY_NT_NON_UNIQUE_RID +#endif + /* General purpose security attribute objects for global use. */ SECURITY_ATTRIBUTES NO_COPY sec_none; SECURITY_ATTRIBUTES NO_COPY sec_none_nih; @@ -175,7 +179,7 @@ cygsid::get_sid (DWORD s, DWORD cnt, DWORD *r, bool well_known) well_known_sid = well_known; else well_known_sid = (s != SECURITY_NT_AUTH - || r[0] != SECURITY_NT_NON_UNIQUE_RID); + || r[0] != SECURITY_NT_NON_UNIQUE); return psid; } @@ -374,7 +378,11 @@ static const struct { { SE_CREATE_GLOBAL_NAME, false }, { SE_TRUSTED_CREDMAN_ACCESS_NAME, false }, { SE_RELABEL_NAME, true }, +#ifndef __MINGW64_VERSION_MAJOR { SE_INCREASE_WORKING_SET_NAME, false }, +#else + { SE_INC_WORKING_SET_NAME, false }, +#endif { SE_TIME_ZONE_NAME, true }, { SE_CREATE_SYMBOLIC_LINK_NAME, true } }; @@ -555,7 +563,7 @@ PSECURITY_ATTRIBUTES __stdcall __sec_user (PVOID sa_buf, PSID sid1, PSID sid2, DWORD access2, BOOL inherit) { PSECURITY_ATTRIBUTES psa = (PSECURITY_ATTRIBUTES) sa_buf; - PSECURITY_DESCRIPTOR psd = (PSECURITY_DESCRIPTOR) + PISECURITY_DESCRIPTOR psd = (PISECURITY_DESCRIPTOR) ((char *) sa_buf + sizeof (*psa)); PACL acl = (PACL) ((char *) sa_buf + sizeof (*psa) + sizeof (*psd)); NTSTATUS status; @@ -586,7 +594,7 @@ PSECURITY_DESCRIPTOR _recycler_sd (void *buf, bool users, bool dir) { NTSTATUS status; - PSECURITY_DESCRIPTOR psd = (PSECURITY_DESCRIPTOR) buf; + PISECURITY_DESCRIPTOR psd = (PISECURITY_DESCRIPTOR) buf; if (!psd) return NULL; @@ -644,7 +652,7 @@ PSECURITY_DESCRIPTOR _everyone_sd (void *buf, ACCESS_MASK access) { NTSTATUS status; - PSECURITY_DESCRIPTOR psd = (PSECURITY_DESCRIPTOR) buf; + PISECURITY_DESCRIPTOR psd = (PISECURITY_DESCRIPTOR) buf; if (psd) { -- cgit v1.2.3