summaryrefslogtreecommitdiffstats
path: root/winsup
Commit message (Collapse)AuthorAgeFilesLines
...
* Support profiling of multi-threaded apps.Mark Geisert2016-03-107-73/+134
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch set modifies Cygwin's profiling support to sample PC values of all an app's threads, not just the main thread. There is no change to how profiling is requested: just compile and link the app with "-pg" as usual. The profiling info is dumped into file gmon.out as always. A new facility enabled via the environment variable GMON_OUT_PREFIX. This facility is intended to match an undocumented Linux glibc feature. Exporting the variable with a non-empty value such as "foo" causes the profiling info to go to a file named foo.$pid instead of the default. With that, both resulting processes of a fork() can have their profiling data captured in separate files. gprof already knows how to accumulate data from multiple files if they all pertain to the same app. There is no change to the normal Cygwin execution paths if profiling is not enabled. And when it is enabled, only the one profiling thread per profiled app is doing more work than it used to. * include/sys/cygwin.h: Add CW_CYGHEAP_PROFTHR_ALL. * cygheap.cc (cygheap_profthr_all): New C-callable function that runs cygheap's threadlist handing each pthread's thread handle in turn to profthr_byhandle(). * external.cc (cygwin_internal): Add case CW_CYGHEAP_PROFTHR_ALL. * gmon.c (_mcleanup): Add support for multiple simultaneous gmon.out* files named via environment variable GMON_OUT_PREFIX. * gmon.h (struct gmonparam): Make state decl volatile. * mcount.c (_MCOUNT_DECL): Change stores into gmonparam.state to use Interlocked operations. Add #include "winsup.h", update commentary. * profil.c (profthr_byhandle): New function abstracting out the updating of profile counters based on a thread handle. (profthr_func): Update to call profthr_byhandle() to sample the main thread then call cygheap_profthr_all() indirectly through cygwin_internal(CW_CYGHEAP_PROFTHR_ALL) to sample all other threads. (profile_off): Zero targthr to indicate profiling was turned off. (profile_on): Fix handle leak on failure path. (profile_child): New callback func to restart profiling in child process after a fork if the parent was being profiled. (profile_ctl): Call pthread_atfork() to set profile_child callback. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* getifaddrs: Return pointer to extended interface info in ifa_data memberCorinna Vinschen2016-03-102-22/+36
| | | | | | | | | | | | | | | | According to https://cygwin.com/ml/cygwin/2016-03/msg00124.html it's a problem to collect friendlyname info using AF_INET6 sockets. Fix problem by exposing additional hardware info for all collected interfaces via the pointer in the ifaddrs::ifa_data member. * include/ifaddrs.h (struct ifaddrs_hwdata): Define as struct of not yet exposed members of struct ifall, defined in net.cc. * net.cc (struct ifall): Replace hardware dta members with struct ifaddrs_hwdata. Accommodate throughout. (get_ifs): Let ifaddrs ifa_data member point to ifall::ifa_hwdata member. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Revamp acl_extended_fd/acl_extended_file to avoid open(2) callCorinna Vinschen2016-03-101-14/+44
| | | | | | | | | | | | | | | | | | Calling open from acl_extended_file{_nofollow} indiscriminately may hang if the file is a FIFO. Ultimately the FIFO implementation needs a thorough rewrite, but for the time being we better do what stat(2) and friends do: Just create an fhandler directly. * sec_posixacl.cc (__acl_extended_fh): New static function calling fhandler::facl. (acl_extended_fd): Just call __acl_extended_fh. (__acl_extended_file): Take just a path_conv as parameter and create temporary fhandler to call __acl_extended_fh. (acl_extended_file): Create path_conv from incoming path and call __acl_extended_file on it. (acl_extended_file_nofollow): Ditto. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Overwite potentially faked kernel version with correct valuesCorinna Vinschen2016-03-092-0/+6
| | | | | | | | | | | | | | | | | | | | | | * ntdll.h (RtlGetNtVersionNumbers): Declare. * wincap.cc (wincapc::init): Overwrite kernel version info returned by RtlGetVersion with correct info returnd by RtlGetNtVersionNumbers. Add comment. Originally, using RtlGetVersion instead of GetVersionEx was supposed to fix the fact that GetVersionInfo returns the wrong kernel version if the executable has been built with an old manifest (or none at all), starting with Windows 8.1. Either this never really worked as desired and our testing was flawed, or this has been changed again with Windows 10, so that RtlGetVersion does the kernel faking twist as well. Since we're only reading the value in the first process in a process tree. the entire process tree is running with a wrong OS version information in that case. Fortunately, the (undocumented) RtlGetNtVersionNumbers function is not affected by this nonsense, so we simply override the OS version info fields with the correct values now. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Move definition of wsadata into wsock_initCorinna Vinschen2016-03-091-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem this patch fixes showed up after updating to gcc-5.3.0. The cuplrit is a change in gcc when emitting section attributes. It only shows up when building without optimization. Effect in Cygwin: ws2_32 functions failed to load. In the original code the definition of "NO_COPY wsadata" was preceeding an __asm__ block (the definition of the _wsock_init wrapper), while the definition of "NO_COPY here" immediately follows the same assembler block. When gcc-5.3.0 emits assembler code for the wsadata definition, it emits the .data_cygwin_nocopy section attribute. Next it emits the assembler output for the __asm_ block, entirely ignoring its content. The __asm__ block adds a .text section definition. Eventually gcc emits assembler code for the here definition. However, apparently gcc still "knows" that it just emitted the .data_cygwin_nocopy section attribute and so doesn't redefine it. Remember the __asm__? It changed the section to .text. So with gcc-4.9.3 we got: .section .data_cygwin_nocopy,"w" wsadata: __asm__ block: .text .section .data_cygwin_nocopy,"w" here: With gcc 5.3.0 we now get: .section .data_cygwin_nocopy,"w" wsadata: __asm__ block: .text here: So "here" is now in the .text segment which is read-only. Hilarity ensues. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: Document new POSIX ACL APICorinna Vinschen2016-03-082-0/+38
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* faq: Sort BLODA list and update advice on fixing fork failuresJon Turney2016-03-081-32/+56
| | | | | | | | | | * faq-using.xml (bloda): Alphabetically sort BLODA list for ease of finding things in it. (fixing-fork-failures): Update to suggest rebase-trigger rather than running rebaseall via dash yourself. Mention detect_bloda CYGWIN token. Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
* acl_create_entry: Don't invalidate existing entry_d and permset_d.Corinna Vinschen2016-03-081-16/+11
| | | | | | | | | * sec_posixacl .cc (__acl_dup): Remove. (acl_dup): Fold __acl_dup functionality into this function. (acl_create_entry): Don't create new acl_t. Just realloc acl->entry to make room for new aclent_t. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* __acltotext: Always append NULCorinna Vinschen2016-03-081-1/+1
| | | | | | * sec_acl.cc (__acltotext): Append NUL unconditionally. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Implement POSIX.1e ACL functionsCorinna Vinschen2016-03-0818-276/+1825
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (DLL_OFILES): Add sec_posixacl.o. (SUBLIBS): Add libacl.a (libacl.a): New rule to create libacl.a. * common.din: Export POSIX ACL functions as well as most libacl.a extensions. * fhandler.h (fhander_base::acl_get): New prototype. (fhander_base::acl_set): Ditto. (fhandler_disk_file::acl_get): Ditto. (fhandler_disk_file::acl_set): Ditto. * include/acl/libacl.h: New file. * include/cygwin/version.h: Bump API minor version. * include/sys/acl.h: Drop including cygwin/acl.h. Accommodate throughout Cygwin. Add POSIX ACL definitions. * sec_acl.cc: Include sec_posixacl.h. Replace ILLEGAL_UID and ILLEGAL_GID with ACL_UNDEFINED_ID where sensible. (__aclcheck): New internal acl check function to be used for Solaris and POSIX ACLs. (aclcheck32): Call __aclcheck. (__aclcalcmask): New function to compute ACL_MASK value. (__aclsort): New internal acl sort function to be used for Solaris and POSIX ACLs. (aclsort32): Call __aclsort. (permtostr): Work directly on provided buffer. (__acltotext): New internal acltotext function to be used for Solaris and POSIX ACLs. (acltotext32): Call __acltotext. (__aclfromtext): New internal aclfromtext function to be used for Solaris and POSIX ACLs. (aclfromtext32): Call __aclfromtext. * sec_posixacl.cc: New file implemeting POSIX ACL functions. * sec_posixacl.h: New internal header. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin/acl.h: Don't clutter namespaceCorinna Vinschen2016-03-081-32/+38
| | | | | | | include/cygwin/acl.h: Change comments to /**/ style. Reformat declarations. Use underscores in argument names. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Mention 64-bit Cygwin as another remedy for fork() failures.Alexey Sokolov2016-03-041-1/+3
|
* ccwrap: fix build with non-english locale set (v2)Patrick Bendorf2016-02-291-5/+1
| | | | | | | | after some discussion on irc and the list i'm resubmitting a simpler version of the patch. setting the locale on cygwin to 'C.UTF-8' is not needed, so i'm always setting it to 'C' which is sufficient for the build process and the most simple fix.
* ccwrap: fix build with non-english locale setPatrick Bendorf2016-02-291-0/+5
| | | | | | | | | | | | | | short explanation: after setting up cygwin on my systems the default locale is set to "de_DE.UTF-8". this leads to ccwrap not picking up certain "-isystem" arguments, which in turn leads to "stddef.h: no such file or directory". this breaks the build process for systems having non english locale. ccwrap scans the output of the first compiler invocation (line 21) for some specific english output on and around line 43. i changed the patch to check uname -o for cygwin string and set the locale to either C or C.UTF-8
* cygwin: Export clog10, clog10fYaakov Selkowitz2016-02-224-1/+10
| | | | | | | | | | | | winsup/cygwin/ * common.din: Add clog10, clog10f. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. winsup/doc/ * new-features.xml (ov-new2.5): Mention clog10, clog10f. * posix.xml (std-gnu): Add clog10, clog10f. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Fix comments in sec_acl.ccCorinna Vinschen2016-02-221-7/+7
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* ssp: Fixes for 64-bitJon Turney2016-02-201-105/+119
| | | | | | | | | | | | | | | Fix various 32/64-bit portability issues in ssp, the single-step profiler, and also build it for 64-bit. This didn't turn out to actually be very useful for what I wanted to use it for, so it's only been lightly tested. It appears that on x86_64, single-step exceptions occur for much more of the code in system DLLs, unlike x86, so ssp may take much, much longer to profile some programs. There is existing code to use breakpoints to mitigate this, but that is currently disabled. Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
* Update Cygwin release notes.Corinna Vinschen2016-02-182-0/+17
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: accept SIGIOT as alias of SIGABRTYaakov Selkowitz2016-02-183-1/+4
| | | | | | | | | | | winsup/cygwin/ * include/cygwin/signal.h (SIGIOT): Define SIGIOT in terms of SIGABRT. * strsig.cc (struct sigdesc): Ditto. winsup/doc/ * utils.xml (kill): Document SIGIOT. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Drop temporary declaration of GetSystemTimePreciseAsFileTime.Corinna Vinschen2016-02-181-3/+0
| | | | | | | * times.cc (GetSystemTimePreciseAsFileTime): Remove declaration and accompanying comment. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* setuid: Create token from scratch without credentials of callerCorinna Vinschen2016-02-183-35/+29
| | | | | | | | | | | | | | | | * sec_auth.cc (get_token_group_sidlist): Drop auth_luid and auth_pos parameter. Remove code adding a logon SID. (get_initgroups_sidlist): Drop auth_luid and auth_pos parameter. Drop in call to get_token_group_sidlist. Accommodate in callers. (get_setgroups_sidlist): Ditto. (create_token): Explicitely set auth_luid to ANONYMOUS_LOGON_LUID or LOCALSERVICE_LUID depending on OS. Explain why. Remove handling of logon SID since we don't generate one anymore. (lsaauth): Drop now unused local variable auth_luid and auth_pos. * wincap.h (wincaps::has_broken_whoami): New element. * wincap.cc: Implement above element throughout. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cyglsa: Drop code handling Windows 2000 and earlierCorinna Vinschen2016-02-171-35/+2
| | | | | | | | | | * cyglsa.c (must_create_logon_sid): Remove. (LsaApInitializePackage): Drop checking version and setting must_create_logon_sid accordingly. (LsaApLogonUserEx): Drop code setting login SID only required on Windows 2000 and earlier. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Silent relocation truncations considered harmfulMark Geisert2016-02-171-1/+1
| | | | | | | | | | | | This follows up from my msg re GMP-ECM failing its 'make check' on the main list https://cygwin.com/ml/cygwin/2016-02/msg00147.html . There's an error that ought to be reported during dynamic linking if the linked-to address is too far from the relocation site. However the error is not reported if __OPTIMIZE__ was #defined when building the Cygwin DLL. I can't see why optimization settings should affect this. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin_conv_path: Really always preserve trailing slash in conversion to ↵Corinna Vinschen2016-02-151-1/+1
| | | | | | | | | | POSIX path * mount.cc (mount_info::conv_to_posix_path): Account for scenarios where the path is identical to a mount point in terms of preserving the trailing slash in the output. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Make buffered console characters visible to select().John Hood2016-02-151-1/+1
|
* Document pthread_barrier* functions as implementedCorinna Vinschen2016-02-131-1/+7
| | | | | | | posix.xml (std-susv4): Add pthread_barrier* functions. (std-notimpl): Remove here. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Remove local winbase.h (again).Corinna Vinschen2016-02-131-59/+0
| | | | | | | Mingw32-w64 supports all required inline Interlocked functions in the meantime. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Bump Cygwin version to 2.5.0Corinna Vinschen2016-02-133-2/+53
| | | | | | Add a release file. Add release text to documentation. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* POSIX barrier implementation, take 3Václav Haisman2016-02-136-0/+324
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The attached patch should address all of the review comments. Modifed change log: Newlib: * libc/include/sys/features.h (_POSIX_BARRIERS): Define for Cygwin. * libc/include/sys/types.h (pthread_barrier_t) (pthread_barrierattr_t): Do not define for Cygwin. Cygwin: * common.din (pthread_barrierattr_init) (pthread_barrierattr_setpshared, pthread_barrierattr_getpshared) (pthread_barrierattr_destroy, pthread_barrier_init) (pthread_barrier_destroy, pthread_barrier_wait): Export. * include/cygwin/types.h (pthread_barrierattr_t) (pthread_barrier_t): Declare. * include/pthread.h (PTHREAD_BARRIER_SERIAL_THREAD) (pthread_barrierattr_init, pthread_barrierattr_setpshared) (pthread_barrierattr_getpshared, pthread_barrierattr_destroy) (pthread_barrier_init, pthread_barrier_destroy) (pthread_barrier_wait): Declare. * thread.h (PTHREAD_BARRIER_MAGIC) (PTHREAD_BARRIERATTR_MAGIC): Define. (class pthread_barrierattr, class pthread_barrier): Declare. * thread.cc (delete_and_clear): New local helper function. (class pthread_barrierattr, class pthread_barrier): Implement. * miscfuncs.h (likely, unlikely): New macros. -- VH
* cygwin: work around GCC 5 preprocessor changesYaakov Selkowitz2016-02-131-1/+1
| | | | | | | | | | GCC 5 adds #line directives (and hence extra newlines) for macros expansions, which confuses cygmagic. Using the -P flag avoids them entirely. https://cygwin.com/ml/cygwin-patches/2016-q1/msg00016.html Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* Bump Cygwin version to 2.4.2.Corinna Vinschen2016-02-121-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: fix errors with GCC 5Yaakov Selkowitz2016-02-123-2/+5
| | | | | | | | | | | | | | | | | | GCC 5 switched from C89 to C11 by default. This implies a change from GNU to C99 inline by default, which have very different meanings of extern inline vs. static inline: https://gcc.gnu.org/onlinedocs/gcc/Inline.html Marking these as gnu_inline retains the previous behaviour. winsup/cygwin/ * exceptions.cc (exception::handle): Change debugging to int to fix an always-true boolean comparison warning. * include/cygwin/config.h (__getreent): Mark gnu_inline. * winbase.h (ilockcmpexch, ilockcmpexch64): Ditto. Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
* cygwin_conv_path: Always preserve trailing backslashes in conversion to ↵Corinna Vinschen2016-02-094-5/+12
| | | | | | | | | | | | | | POSIX paths * include/sys/cygwin.h (CCP_CONVFLAGS_MASK): Define. * mount.h (__CCP_APP_SLASH): Define. * mount.cc (mount_info::conv_to_posix_path): Handle __CCP_APP_SLASH flag. * path.cc (cygwin_conv_path): Use CCP_CONVFLAGS_MASK to evaluate "how" flag values. Always add __CCP_APP_SLASH flag when calling mount_info::conv_to_posix_path. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Treat ACLs with extra ACEs for Admins and SYSTEM like a trivial ACLCorinna Vinschen2016-01-283-20/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | POSIX.1e requires that chmod changes the MASK rather than the GROUP_OBJ value if the ACL is non-trivial. On Windows, especially on home machines, a standard ACL often consists of entries for the user, maybe the group, and additional entries for SYSTEM and the Administrators group. A user calling chmod on a file with bog standard Windows perms usually expects that chmod changes the GROUP_OBJ perms, but given the rules from POSIX.1e we can't do that. However, since we already treat Admins and SYSTEM special in a ACL (they are not used in MASK computations) we go a step in the Windows direction to follow user expectations. If an ACL only consists of the three POSIX permissions, plus entries for Admins and SYSTEM *only*, then we change the permissions of the GROUP_OBJ entry *and* the MASK entry. * fhandler_disk_file.cc (fhandler_disk_file::chmod): Drop unused code. Add special handling for a "standard" Windows ACL. Add comment to explain. * sec_acl.cc (get_posix_access): Allow to return "standard-ness" of an ACL to the caller. Add preceeding comment to explain a bit. * security.h (get_posix_access): Align prototype. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* get_posix_access: Fix primary group handing when multiple ACEs existCorinna Vinschen2016-01-281-3/+5
| | | | | | | Handle additional ACE for primary group only as another GROUP entry if it's an allow ACE. Deny ACEs don't qualify. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Don't use LoadLibraryEx(..., LOAD_LIBRARY_SEARCH_SYSTEM32). It hangsCorinna Vinschen2016-01-273-31/+13
| | | | | | | | | | | | | | | | Observed running hexchat under X. For some reason the call to LoadLibraryEx(..., LOAD_LIBRARY_SEARCH_SYSTEM32) in dll_load hangs when trying to autoload MsgWaitForMultipleObjectsEx in select.cc after hexchat forks to run DNS calls. Dropping the call and just using full paths as in 2.3.1 fixes the issue. * autoload.cc (dll_load): Drop call to LoadLibraryEx with LOAD_LIBRARY_SEARCH_SYSTEM32 flag. * wincap.h (wincaps::has_load_lib_search_flags): Remove. * wincap.cc (wincaps::has_load_lib_search_flags): Drop handling this flag. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Drop has_broken_fnoi flagCorinna Vinschen2016-01-273-7/+0
| | | | | | | | | * mount.cc (fs_info::update): Don't set has_broken_fnoi. It's unused anyway. * mount.h (class fs_info): Remove has_broken_fnoi status flag. * path.h (class path_conv): Remove has_broken_fnoi method. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Make select wait state more readableCorinna Vinschen2016-01-271-15/+19
| | | | | | | | Rename "res" to "wait_state" and change its type to select_stuff::wait_states. Use select_stuff::wait_states values instead of ints throughout. Rearrange a few comments. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix missing 'user' in usertemp docsCorinna Vinschen2016-01-271-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add 2.4.1 release message filecygwin-2_4_1-releaseCorinna Vinschen2016-01-231-0/+12
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygpath: Avoid returning SysWOW64Corinna Vinschen2016-01-211-0/+13
| | | | | | | | | | | | | | | | | | | | | On Cygwin 32 running under WOW64: When case-correcting the path fetched with -S, the underlying Windows function fetching the normalized path returns the real path C:\Windows\SysWOW64 instead of the path redirection enabled C:\Windows\System32 path. This breaks using the result of `cygpath -S' to fetch the POSIX path of the network related files under SYSTEMROOT\drivers\etc. This path is in fact under the *real* C:\Windows\System32 and only mapped into the 32 bit C:\Windows\System32 (aka C:\Windows\SysWOW64) via path redirection. Sounds messy? This patch checks if we're running under WOW64. If so, it changes the path returned by GetSystemDirectoryW from "system32" to "Sysnative". This in turn is changed to "System32" by NtQueryInformationFile, so we're back to what we need. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin_logon_user: Return non-privileged token as wellCorinna Vinschen2016-01-211-3/+7
| | | | | | | | | | If the calling process doesn't have sufficient privileges to fetch the linked token of an admin-user token, cygwin_logon_user fails. This patch changes that by returning the original, unprivileged token of the admin user to allow authentication and calling setuid for the current process. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix formatting in sec_auth.ccCorinna Vinschen2016-01-211-3/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Bump cygwin version to 2.4.1Corinna Vinschen2016-01-161-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* faq: Update FAQ question and answer about gdb and signalsJon Turney2016-01-151-6/+13
| | | | | | * faq-programming.xml: Update question and answer about gdb and signals. Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
* get_posix_access: Fix group deny bits leaking into file type attribute bitscygwin-2_4_0-releaseCorinna Vinschen2016-01-151-1/+1
| | | | | | | | * sec_acl.cc (get_posix_access): Fix bracketing in expression constructing POSIX group permissions so as not leaking deny bits into POSIX file type bits. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Initialize handle in dll_load to avoid compiler warningCorinna Vinschen2016-01-121-1/+1
| | | | | | * autoload.cc (dll_load): Initialize h to NULL. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Use MAKEWORD macro in WSAStartup call per documentationCorinna Vinschen2016-01-121-1/+1
| | | | | | | * autoload.cc (wsock_init): Use MAKEWORD macro to create requested version rather than handcrafted expression. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Try loading with safe path using LOAD_LIBRARY_SEARCH_SYSTEM32 firstCorinna Vinschen2016-01-123-18/+43
| | | | | | | | | | | | * autoload.cc (dll_load): Move safe loading from std_dll_init here. Add code to handle systems supporting LOAD_LIBRARY_SEARCH flags. Add comments to explain what the code is doing. Fix up comment preceeding this function. (std_dll_init): Move safe loading code to dll_load. * wincap.h (wincaps::has_load_lib_search_flags): New element. * wincap.cc: Implement above element throughout. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix previous fix for generating unique inode numbers for socketsCorinna Vinschen2016-01-113-8/+12
| | | | | | | | | | | | * fhandler.h (fhandler_base::get_plain_ino): New inline method. Add comment to explain what it's supposed to be used for. * fhandler_socket.cc (fhandler_socket::get_proc_fd_name): Create filename using inode number. (fhandler_socket::fstat): Generate inode number from filename if ino is not set (that's the case in a stat(2) call). * pipe.cc: Throughout, use get_plain_ino when appropriate. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>