summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin
Commit message (Collapse)AuthorAgeFilesLines
...
* Define BSD u_intN_t types indiscriminatelyCorinna Vinschen2016-03-241-17/+0
| | | | | | | | | | | | | | The u_intN_t types are BSD types but sanctioned by POSIX. They are always defined when using Glibc headers so we follow suit. newlib: * libc/include/sys/types.h: Drop outdated __INTTYPES_DEFINED__ macro. Always define u_intN_t types. cygwin: * include/cygwin/types.h: Remove definition of u_intN_t types. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add release message for commit 59b3bd2Corinna Vinschen2016-03-231-0/+4
|
* Only allow enabled groups as primary groupCorinna Vinschen2016-03-231-6/+45
| | | | | | | | | | | | So far any group in the user's token could be used as primary group. Windows doesn't check if the primary group is enabled or not, it just has no meaning. From a POSIXy point of view it can lead to weird results though. * uinfo.cc (check_token_membership): New static function. (internal_getlogin): Only allow enabled groups as primary group. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Use 64K buffers for TOKEN_GROUPSCorinna Vinschen2016-03-231-3/+3
| | | | | | | | | | A user token can be up to 64K in size. Using 32K buffers for TOKEN_GROUPS may be insufficient. * uinfo.cc (get_logon_sid): Use 64K buffers for the TOKEN_GROUPS array. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Allocate temporary TOKEN_GROUP arrays using TLSCorinna Vinschen2016-03-231-28/+12
| | | | | | | | | | | | | A user token can be up to 64K in size. The group list might take a lot of that so use tmp_pathbuf allocated space rather than stack space allocted via alloca. In create_token the TOKEN_GROUP was allocated via malloc, but the code is needlessly complicated. Simplify by using tmp_pathbuf as well. * sec_auth.cc (verify_token): Allocate TOKEN_GROUP via tmp_pathbuf. (create_token): Ditto. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cxx.cc: Disable C++14 warning for new sized delete operatorCorinna Vinschen2016-03-231-0/+4
| | | | | | | | | As long as we're not building in C++14 mode, the definition of the sized delete operator results in a compatibility warning. * cxx.cc (operator delete): Disable C++14 warning for sized variant. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add c++14 sized deallocation operatorPeter Foley2016-03-231-0/+5
| | | | | | | | | | | When compiling with -std=c++14 (the default for gcc 6.0+), the sized deallocation operator must be defined to prevent undefined symbols when linking. winsup/cygwin/ChangeLog: cxx.cc (operator delete(void *p, size_t)): Define. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Drop Cygwin-only posix_memalign prototypeCorinna Vinschen2016-03-231-3/+0
| | | | | | | | | | newlib: * libc/include/stdlib.h (posix_memalign): Drop __rtmes__ guards. cygwin: * include/cygwin/stdlib.h (posix_memalign): Drop prototype. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Use DnsFree instead of deprecated DnsRecordListFreePeter Foley2016-03-232-2/+2
| | | | | | | | | | | | | | | The latest version of the mingw headers have been updated to make DnsRecordListFree an alias of DnsFree when targeting Windows XP or later. Use DnsFree directly, avoiding the wrapper function. /home/peter/cross/src/cygwin/winsup/cygwin/libc/minires-os-if.c:289: undefined reference to `DnsFree' winsup/cygwin/ChangeLog autoload.cc: Load DnsFree rather then DnsRecordListFree libc/minires-os-if.cc (cygwin_query): Use DnsFree rather then DnsRecordListFree Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Add nonnull annotation to posix_memalign.Peter Foley2016-03-211-2/+1
| | | | | | | | | | | | | | | | GCC 6.0+ asserts that the memptr argument to the builtin function posix_memalign is nonnull. Add the necessary annotation to the prototype and remove the now unnecessary check to fix a warning. newlib/Changelog newlib/libc/include/stdlib.h: Annotate arg to posix_memalign as non-null. winsup/cygwin/ChangeLog malloc_wrapper.cc (posix_memalign): Remove always true nonnull check. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Move arc4random Cygwin only code to CygwinSebastian Huber2016-03-212-0/+25
| | | | | | Keep the Newlib arc4random.c identical to the OpenBSD upstream version. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>.
* srandom: Replace accessing /dev/random by equivalent getentropy callCorinna Vinschen2016-03-201-10/+1
| | | | | | | | | | /dev/random calls getentropy. So there's no good reason to go out of our way to open /dev/random just to call getentropy anyway. * random.cc (srandomdev): Drop opening /dev/random in favor of calling getentropy. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Revert "Use high-resolution timebases for select()."Corinna Vinschen2016-03-203-141/+70
| | | | | | This reverts commit 6e70fd315a29578f090a98f84e9d8e95ddb156e3. Revert accidental push
* Revert "Debug printfs."Corinna Vinschen2016-03-203-21/+2
| | | | | | This reverts commit 9f82de59a07da145c177648fe474f19cd9def7a1. Revert accidental push
* Revert "Improve and simplify select()."Corinna Vinschen2016-03-203-15/+76
| | | | | | This reverts commit 472d0a228c56bd4783ebb0561667cda2de3cd168. Revert accidental push
* Drop redundant arc4random prototypes from cygwin/stdlib.hCorinna Vinschen2016-03-201-6/+0
| | | | | | | | | Newlib's default stdlib.h now defines these functions so we can drop them from the Cygwin-specific header. Remove the arc4random_stir and arc4random_uniform prototypes entirely. They shouldn't be used by applications anymore. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Allow machine-dependent arc4 lockingCorinna Vinschen2016-03-201-0/+30
| | | | | | | | | | | | newlib: * libc/stdlib/arc4random.h: Remove Cygwin-specific locking code. Conditionalize arc4 locking. Check for _ARC4_LOCK_INIT being undefined to fall back to default implementation. cygwin: * include/machine/_arc4random.h: New file. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Improve and simplify select().John Hood2016-03-203-76/+15
| | | | | | | | | | * cygwait.h (cygwait_us) Remove; this reverts previous changes. * select.h: Eliminate redundant select_stuff::select_loop state. * select.cc (select): Eliminate redundant select_stuff::select_loop state. Eliminate redundant code for zero timeout. Do not return early on early timer return. (select_stuff::wait): Eliminate redundant select_stuff::select_loop state.
* Debug printfs.John Hood2016-03-203-2/+21
| | | | | | | * fhandler.cc (fhandler_base::get_readahead): Add debug code. * fhandler_console.cc (fhandler_console::read): Add debug code. * select.cc (pselect): Add debug code. (peek_console): Add debug code.
* Use high-resolution timebases for select().John Hood2016-03-203-70/+141
| | | | | | | | | | | | * cygwait.h: Add cygwait_us() methods. * select.h: Change prototype for select_stuff::wait() for larger microsecond timeouts. * select.cc (pselect): Convert from old cygwin_select(). Implement microsecond timeouts. (cygwin_select): Rewrite as a wrapper on pselect(). (select): Implement microsecond timeouts. (select_stuff::wait): Implement microsecond timeouts with a timer object.
* Move get_nonascii_key into fhandler_console.John Hood2016-03-203-5/+3
| | | | | | | * fhandler.h (fhandler_console): Move get_nonascii_key() from select.c into this class. * select.cc (peek_console): Move get_nonascii_key() into fhandler_console class.
* Fix strict aliasingPeter Foley2016-03-201-2/+1
| | | | | | | | | Fix a strict aliasing error detected by gcc 6.0+ winsup/cygwin/ChangeLog * pinfo.cc (winpids::enum_process): Fix strict aliasing. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Fix typoed comparisonPeter Foley2016-03-201-1/+1
| | | | | | | winsup/cygwin/ChangeLog * thread.cc (semaphore::open): Fix mistaken conditional. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* The address of an class always evaluates to truePeter Foley2016-03-201-1/+1
| | | | | | | | | | winsup/cygwin/pinfo.cc:465:14: error: the compiler can assume that the address of 'tc' will always evaluate to 'true' [-Werror=address] winsup/cygwin/ChangeLog * pinfo.cc (_pinfo::set_ctty): remove always true check. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Remove misleading indentationPeter Foley2016-03-201-1/+1
| | | | | | * syscalls.cc (getpriority): Fix misleading indentation. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Add necessary braces to if statementsPeter Foley2016-03-202-2/+4
| | | | | | | | | | | The missing braces cause only the first expression to be guarded by the else clause. winsup/cygwin/ChangeLog * fhandler_disk_file.cc (facl): Add missing braces to if statement. * mount.cc (dos_drive_mappings): Add missing braces to if statement. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Remove dead code from fhandler_console.Peter Foley2016-03-201-2/+0
| | | | | | | | | | | | | | | | | This if is unconditionally false, so remove it. winsup/cygwin/fhandler_console.cc: In member function 'bool dev_console::fillin(HANDLE)': winsup/cygwin/fhandler_console.cc:740:22: error: self-comparison always evaluates to false [-Werror=tautological-compare] if (b.dwSize.Y != b.dwSize.Y || b.dwSize.X != b.dwSize.X) ~~~~~~~~~~~^~~~~~~~~~~~~ winsup/cygwin/fhandler_console.cc:740:50: error: self-comparison always evaluates to false [-Werror=tautological-compare] if (b.dwSize.Y != b.dwSize.Y || b.dwSize.X != b.dwSize.X) ~~~~~~~~~~~^~~~~~~~~~~~~ winsup/cygwin/ChangeLog * fhandle_console.cc (fillin): remove dead code Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Remove unused and unsafe call to __builtin_frame_addressPeter Foley2016-03-201-3/+2
| | | | | | | | | | | | | | | | initial_sp has been unused since commit fbf23e3 back in 2000. Keep the value, so as to avoid changing the offset of magic_biscuit. winsup/cygwin/lib/_cygwin_crt0_common.cc:140:52: error: calling 'void* __builtin_frame_address(unsigned int)' with a nonzero argument is unsafe [-Werror=frame-address] u->initial_sp = (char *) __builtin_frame_address (1); winsup/cygwin/ChangeLog lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Initialize initial_sp with nullptr. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* winsup: Move all old CVS Changelogs into CVSChangeLogs.old dirCorinna Vinschen2016-03-1923-78152/+0
|
* Remove ill-advised cygwin_propsCorinna Vinschen2016-03-193-41/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cygwin_props have been invented to allow switching off the unique installation keys in the first place, supposedly for debugging. This never really was a good idea, after all we *want* the installations to be independent and there's no good reason to break that, not even for debugging purposes. Other than that, cygwin_props were meant to be used for some other global settings which never took place. There's just no good reason to tweak the DLL binary invisibly where a setting could be done in a file or the environment. This patch removes the cygwin_props entirely, including the related settings in cygcheck. cygwin: * cygprops.h: Remove file. * globals.cc (cygwin_props): Remove. * cygheap.cc (init_cygheap::init_installation_root): Drop removing installation key. utils: * cygcheck.cc: Drop including cygprops.h. Remove now unused option values. (unique_object_name_opt): Remove. (handle_unique_object_name): Remove function. (usage): Remove text for unique-object-names options. (longopts): Remove unique-object-names options. (main): Drop handling unique-object-names options. doc: * utils.xml (cygcheck): Remove text for unique-object-names options. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement getentropy for CygwinCorinna Vinschen2016-03-185-30/+27
| | | | | | | | | | | | | | * miscfuncs.cc (getentropy): Move fhandler_dev_random::crypt_gen_random here and rename to getentropy. Fix type and return values to match getentropy requirements. * miscfuncs.h (getentropy): Add prototype. * fhandler.h (fhandler_dev_random::crypt_gen_random): Remove prototype. * fhandler_random.cc (fhandler_dev_random::crypt_gen_random): Drop. (fhandler_dev_random::write): Use getentropy instead. (fhandler_dev_random::read): Ditto. * fhandler_socket.cc (fhandler_socket::af_local_set_secret): Ditto. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Delete Cygwin's arc4random in favor of new Newlib implementationCorinna Vinschen2016-03-182-364/+0
| | | | | | | * Makefile.in (DLL_OFILES): Remove arc4random.o. * libc/arc4random.c: Remove file. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: define byteswap.h inlines as macrosYaakov Selkowitz2016-03-171-5/+9
| | | | | | | The bswap_* "functions" are macros in glibc, so they may be tested for by the preprocessor (e.g. #ifdef bswap_16). Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: Cygwin headersYaakov Selkowitz2016-03-173-6/+9
| | | | | | Use proper internal macros for BSD and GNU. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: time.hYaakov Selkowitz2016-03-171-3/+4
| | | | | | Throughout, replace __STRICT_ANSI__ with the proper internal macros. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: stdlib.hYaakov Selkowitz2016-03-172-8/+18
| | | | | | | | | | | | | | | | | | | | Throughout, simplify the C99/C11 conditionals, and replace __STRICT_ANSI__ with the proper internal POSIX macros. The _*_r reentrant functions need not be guarded (and most haven't been) because such names in the global scope are reserved to the implementation. atoff is unique to newlib. dtoa is not actually exported (_dtoa_r is used internally), is nonstandard, and the declaration conflicts with the code included in MySQL, NSPR, and SpiderMonkey. mktemp was removed in POSIX.1-2001. The qsort_r declarations are reordered so that the GNU version retains precedence. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: limits.hYaakov Selkowitz2016-03-171-1/+1
| | | | | | Simplify the C99 conditional, and use the internal macro for GNU extensions. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: fnmatch.hYaakov Selkowitz2016-03-172-3/+4
| | | | | | Use the proper internal macro for GNU extensions. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Feature test macros overhaul: dirent.hYaakov Selkowitz2016-03-171-3/+10
| | | | | | | | | | MAXNAMLEN is a BSDism. Use the proper internal macros instead of !_POSIX_SOURCE. telldir and seekdir are XSI, scandir and alphasort are POSIX.1-2008, and scandirat is GNU. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* add release message for commit 4c9bb3eCorinna Vinschen2016-03-171-0/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Propagate correct Windows error if executable can't be openedCorinna Vinschen2016-03-171-0/+1
| | | | | | * spawn.cc (av::setup): Set last Win32 error if NtOpenFile fails. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add release message for commit 7346568Thomas Wolff2016-03-171-0/+4
|
* Make requested console reports workThomas Wolff2016-03-163-4/+30
| | | | | | | | | | | | | | | | | | | cf https://cygwin.com/ml/cygwin-patches/2012-q3/msg00019.html This enables the following ESC sequences: ESC[c sends primary device attributes ESC[>c sends secondary device attributes ESC[6n sends cursor position report * fhandler.h (class dev_console): Add console read-ahead buffer. (class fhandler_console): Add peek function for it (for select). * fhandler_console.cc (fhandler_console::setup): Init buffer. (fhandler_console::read): Check console read-aheader buffer. (fhandler_console::char_command): Put responses to terminal requests (device status and cursor position reports) into common console buffer (shared between CONOUT/CONIN) instead of fhandler buffer (separated). * select.cc (peek_console): Check console read-ahead buffer.
* cygwin_getaddrinfo: workaround Winsock getaddrinfo issue with broken DNSCorinna Vinschen2016-03-141-1/+10
| | | | | | | | | | | | | | | | | | Add experimental code to workaround the issue described in the thread starting at https://cygwin.com/ml/cygwin/2015-07/msg00350.html There's a hint in https://communities.vmware.com/message/2577858#2577858 that this problem is related to using the AI_ALL flag. This patch checks if GetAddrInfoW returned with WSANO_RECOVERY and if the AI_ALL flag was set, it retries GetAddrInfo without the AI_ALL flag. * net.cc (cygwin_getaddrinfo): Add experimental code to retry GetAddrInfoW without AI_ALL flag if it returned with WSANO_RECOVERY. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Don't write NULL SID ACE if it's not necessary.Corinna Vinschen2016-03-131-4/+17
| | | | | | | | | | | | | If the ACL is supposed to reflect only standard POSIX permissions, and if the permissions are so that user has more perms than group and group has more perms than other, we don't really need the NULL SID ACE. If the permissions are that simple, get_posix_access will not call AuthZ. * sec_acl.cc (set_posix_perms): Don't write NULL SID ACE if it's not required. Explain why. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Update Cygwin release message text with latest bugfixes.Corinna Vinschen2016-03-131-1/+12
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix typo which might break permission evaluationCorinna Vinschen2016-03-121-1/+1
| | | | | | | * sec_acl.cc (get_posix_access): Fix a typo checking for a_id rather than a_type. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix reading/writing Samba ACLs using RFC2307 mappingCorinna Vinschen2016-03-123-18/+82
| | | | | | | | | | | | | | | | | | | | When using RFC2307 uid/gid-mapping on Samba shares, the POSIX ACL contains the Windows SIDs. When writing back such an ACL we have to map the Windows SIDs back to the corresponding Samba SIDs representing the UNIX uid/gid value. When reading Samba SIDs, make sure never to evaluate a UNIX user account as group. * sec_acl.cc (set_posix_access): Convert Windows SIDs to RFC2307-mapped Sambe UNIX SIDs. * sec_helper.cc (cygpsid::get_id): Skip UNIX user accounts when trying to evaluate a SID as group. Skip UNIX group accounts when trying to evaluate a SID as user. * cygheap.h (cygheap_ugid_cache::reverse_get): New method to get nfs id from cygwin id. (cygheap_ugid_cache::reverse_get_uid): Wrapper for uids. (cygheap_ugid_cache::reverse_get_gid): Wrapper for gids. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add cygsid methods to create SIDs from scratchCorinna Vinschen2016-03-123-23/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | So far creating cygsids requires to generate an "S-1-..." string which is then converted to a SID by cygsid::getfromstr. Add two new methods: - cygsid::create (DWORD auth, DWORD subauth_count, ...) ... is a variable length list of subauth_count DWORD values being the actual subauths. - cygsid::append (DWORD rid) allows to append a single RID to an alreaday constituted SID. * security.h (cygsid::create): Declare public. (cygsid::append): Ditto. * sec_helper.cc (cygsid::create): Implement. (cygsid::append): Implement. * uinfo.cc (pwdgrp::fetch_account_from_windows): Use both new methods as appropriate. Drop setting csid from string. Create SID strings for printing SIDs only. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* gmon.h: Fix type of gmonparam state memberCorinna Vinschen2016-03-111-1/+4
| | | | | | | | gmonparam::state is used in calls to Win32 Interlocked functions. Having this defined as int breaks the build on i686. Redefine as LONG (same size and correct type on all platforms) to make gcc happy. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>