diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2013-10-25 18:40:57 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2013-10-25 18:40:57 +0000 |
commit | 7a1dc2a940f927c76af423a97867ab12094487be (patch) | |
tree | 020459d2ee54122d21d466f33a118606906ac626 /winsup/cygwin | |
parent | 2118eee1ced45667230c654fc53de0b4ed87a017 (diff) | |
download | cygnal-7a1dc2a940f927c76af423a97867ab12094487be.tar.gz cygnal-7a1dc2a940f927c76af423a97867ab12094487be.tar.bz2 cygnal-7a1dc2a940f927c76af423a97867ab12094487be.zip |
* flock.cc (fhandler_base::lock): Only refuse to lock nohandle and
old-style console devices when called to perform BSD flock locking.
Add a FIXME to comment and align description.
* ntdll.h (THREADINFOCLASS): Following MSDN, rename throughout from
THREAD_INFORMATION_CLASS.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/ChangeLog | 9 | ||||
-rw-r--r-- | winsup/cygwin/flock.cc | 14 | ||||
-rw-r--r-- | winsup/cygwin/ntdll.h | 11 | ||||
-rw-r--r-- | winsup/cygwin/release/1.7.26 | 4 |
4 files changed, 26 insertions, 12 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 90716e9a0..a02489ddb 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,14 @@ 2013-10-25 Corinna Vinschen <corinna@vinschen.de> + * flock.cc (fhandler_base::lock): Only refuse to lock nohandle and + old-style console devices when called to perform BSD flock locking. + Add a FIXME to comment and align description. + + * ntdll.h (THREADINFOCLASS): Following MSDN, rename throughout from + THREAD_INFORMATION_CLASS. + +2013-10-25 Corinna Vinschen <corinna@vinschen.de> + * devices.in (dev_storage): Map /dev/clipboard to \Device\Null. * devices.cc: Regenerate. * fhandler.h (fhandler_dev_clipboard::open): Drop declaration. diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc index 0cb2274d0..53069694d 100644 --- a/winsup/cygwin/flock.cc +++ b/winsup/cygwin/flock.cc @@ -927,15 +927,21 @@ fhandler_base::lock (int a_op, struct flock *fl) short a_flags = fl->l_type & (F_POSIX | F_FLOCK); short type = fl->l_type & (F_RDLCK | F_WRLCK | F_UNLCK); - if (nohandle ()) + if (!a_flags) + a_flags = F_POSIX; /* default */ + + /* FIXME: For BSD flock(2) we need a valid, per file table entry OS handle. + Therefore we can't allow using flock(2) on nohandle devices and + pre-Windows 8 console handles (recognized by their odd handle value). */ + if ((a_flags & F_FLOCK) + && (nohandle () || (((uintptr_t) get_handle () & 0x3) == 0x3))) { set_errno (EINVAL); - debug_printf ("Locking on nohandle device, return EINVAL."); + debug_printf ("BSD locking on nohandle and old-style console devices " + "not supported"); return -1; } - if (!a_flags) - a_flags = F_POSIX; /* default */ if (a_op == F_SETLKW) { a_op = F_SETLK; diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h index 0ba907a83..9c8e94b08 100644 --- a/winsup/cygwin/ntdll.h +++ b/winsup/cygwin/ntdll.h @@ -1116,12 +1116,12 @@ typedef enum _SEMAPHORE_INFORMATION_CLASS SemaphoreBasicInformation = 0 } SEMAPHORE_INFORMATION_CLASS, *PSEMAPHORE_INFORMATION_CLASS; -typedef enum _THREAD_INFORMATION_CLASS +typedef enum _THREADINFOCLASS { ThreadBasicInformation = 0, ThreadTimes = 1, ThreadImpersonationToken = 5 -} THREAD_INFORMATION_CLASS, *PTHREAD_INFORMATION_CLASS; +} THREADINFOCLASS, *PTHREADINFOCLASS; /* Checked on 64 bit. */ typedef struct _THREAD_BASIC_INFORMATION @@ -1283,8 +1283,8 @@ extern "C" ULONG, FILE_INFORMATION_CLASS); NTSTATUS NTAPI NtQueryInformationProcess (HANDLE, PROCESSINFOCLASS, PVOID, ULONG, PULONG); - NTSTATUS NTAPI NtQueryInformationThread (HANDLE, THREAD_INFORMATION_CLASS, - PVOID, ULONG, PULONG); + NTSTATUS NTAPI NtQueryInformationThread (HANDLE, THREADINFOCLASS, PVOID, + ULONG, PULONG); NTSTATUS NTAPI NtQueryInformationToken (HANDLE, TOKEN_INFORMATION_CLASS, PVOID, ULONG, PULONG); NTSTATUS NTAPI NtQueryObject (HANDLE, OBJECT_INFORMATION_CLASS, VOID *, @@ -1316,8 +1316,7 @@ extern "C" NTSTATUS NTAPI NtSetEvent (HANDLE, PULONG); NTSTATUS NTAPI NtSetInformationFile (HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FILE_INFORMATION_CLASS); - NTSTATUS NTAPI NtSetInformationThread (HANDLE, THREAD_INFORMATION_CLASS, - PVOID, ULONG); + NTSTATUS NTAPI NtSetInformationThread (HANDLE, THREADINFOCLASS, PVOID, ULONG); NTSTATUS NTAPI NtSetInformationToken (HANDLE, TOKEN_INFORMATION_CLASS, PVOID, ULONG); NTSTATUS NTAPI NtSetSecurityObject (HANDLE, SECURITY_INFORMATION, diff --git a/winsup/cygwin/release/1.7.26 b/winsup/cygwin/release/1.7.26 index 58994053f..f3965b848 100644 --- a/winsup/cygwin/release/1.7.26 +++ b/winsup/cygwin/release/1.7.26 @@ -8,8 +8,8 @@ What changed: - Slightly improve randomness of /dev/random emulation. - Allow to use advisory locking on any device which is backed by an OS handle. - Right now this excludes /dev/dsp as well as almost all virtual files under - /proc. + Right now this excludes /dev/dsp, console windows on pre Windows 8, as well + as almost all virtual files under /proc. Bug fixes: |