summaryrefslogtreecommitdiffstats
path: root/winsup
Commit message (Collapse)AuthorAgeFilesLines
* Move getentropy/getrandom into own fileCorinna Vinschen2017-01-193-57/+71
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix copy/paste buglet in commentCorinna Vinschen2017-01-191-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add release message for commit 4652cc4Corinna Vinschen2017-01-191-0/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Handle Alt+Numpad key sequences in console input and selectCorinna Vinschen2017-01-192-3/+35
| | | | | | | | | | | | | | | | | | | | {p}select/{p}poll completely ignored Alt+Numpad key sequences in console input which results in newer readline using pselect to fail handling such sequences correctly. See https://cygwin.com/ml/cygwin/2017-01/msg00135.html During debugging and testing it turned out that while reading console input, single key presses during an Alt+Numpad sequences where not ignored, so ultimately a sequence like Alt-down Numpad-1 Numpad-2 Numpad-3 whihc is supposed to result in a single character in the input stream will actually result in 4 chars in the input stream, three control sequences and the actual character. Both problems should be fixed by this patch. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add release message for commit 688d943Corinna Vinschen2017-01-141-0/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Always try to write complete incoming buffer on pipes and fifosCorinna Vinschen2017-01-141-1/+1
| | | | | | | | | | | | | | | | | | | | This patch fixes the following problem: Commit 9636c426 refactored the pipe code especially to make sure to call WriteFile only with chunks matching the maximum atomic write count. This accidentally introduced a small change in behaviour on blocking pipes due to the success case falling through into the error case. Rather then writing atomic chunks until all bytes are written, the code immediately broke from the loop after writing the first chunk, basically the same as in case of non-blocking writes. This behaviour is not compliant to POSIX which requires "Write requests to a pipe or FIFO [...] * If the O_NONBLOCK flag is clear, a write request may cause the thread to block, but on normal completion it shall return nbyte." Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add release message for commit 6ed4753Corinna Vinschen2017-01-121-1/+2
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* rename: Refactor "new file already exists and rename fails" caseCorinna Vinschen2017-01-121-20/+27
| | | | | | | | | | | | | | | | | | | | | | | If newfile already exists and is in use, trying to overwrite it with NtSetInformationFile(FileRenameInformation) fails exactly as if we don't have the permissions to delete it. Unfortunately the return code is the same STATUS_ACCESS_DENIED, so we have no way to distinguish these cases. What we do here so far is to start a transaction to delete newfile. If this open fails with a transactional error we stop the transaction and retry opening the file without transaction. But, here's the problem: If newfile is in use, NtOpenFile(oldfile) naturally does NOT fail with a transactional error. Rather, the subsequent call to unlink_nt(newfile) does, because there's another handle open to newfile outside a transaction. However, the code does not check if unlink_nt fails with a transactional error and so fails to retry without transaction. This patch recifies the problem and checks unlink_nt's status as well. Refactor code to get rid of goto into another code block. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* FAST_CWD: adjust the initial search scopeJohannes Schindelin2017-01-121-2/+2
| | | | | | | | | | | | A *very* recent Windows build adds more code to the preamble of RtlGetCurrentDirectory_U() so that the previous heuristic failed to find the call to the locking routine. This only affects the 64-bit version of ntdll, where the 0xe8 byte is now found at offset 40, not the 32-bit version. However, let's just double the area we search for said byte for good measure. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* Fix formatting in pinfo.ccCorinna Vinschen2017-01-101-7/+8
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Document latest Cygwin changesCorinna Vinschen2017-01-102-0/+18
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add Erik Bray to Cygwin CONTRIBUTORSCorinna Vinschen2017-01-101-0/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add a /proc/<pid>/environ proc file handler, analogous to /proc/<pid>/cmdline.Erik M. Bray2017-01-101-0/+22
|
* Add a _pinfo.environ() method analogous to _pinfo.cmdline(), and others.Erik M. Bray2017-01-102-3/+84
| | | | | | | Returns the process's environment concatenated into a single block of null-terminated strings, along with the length of the environment block. Adds an associated PICOM_ENVIRON commune_process handler.
* Move the core environment parsing of environ_init into a new ↵Erik M. Bray2017-01-102-35/+51
| | | | | | | | | | win32env_to_cygenv function. win32env_to_cygwenv handles converting wchar to char and some other minor taks. Optionally it handles converting any paths in variables to posix paths. This will be useful for implementing /proc/<pid>/environ
* Return the correct value for getsockopt(SO_REUSEADDR) after setting ↵Erik M. Bray2017-01-091-0/+8
| | | | setsockopt(SO_REUSEADDR, 1).
* Don't free statically allocated sys_privsCorinna Vinschen2017-01-091-2/+2
| | | | | | | | | commit 67fd2101 introduced a bad bug. Changing sys_privs to a static area and just returning a pointer is nice... *if* the calling code doesn't call free() on it. Make sure callers check pointer for sys_privs and refrain from calling free, if so. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Export getentropy and getrandom callsCorinna Vinschen2016-12-165-6/+96
| | | | | | | | | | | | getentropy per OpenBSD http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/getentropy.2 getrandom per Linux http://man7.org/linux/man-pages/man2/getrandom.2.html Note that GRND_NONBLOCK is not handled
* Fix some broken links in Cygwin FAQJon Turney2016-12-154-11/+7
| | | | | | | | | | | | | | | | GNU no longer encourages the use of documentation mirrors, to avoid referring to obsolete documentation. Also www.fsf.org/manual/ is just a redirect to www.gnu.org/manual/ Links to using-utils.html #fragments are no longer correct as each utility is now a separate page, since 646745cb. indiana.edu seems to have moved XLiveCD information, without a redirect. Linking to clean_setup.pl on cygwin.com doesn't work, as direct downloads aren't allowed, so instead state where it can be found on a mirror. Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
* Define RtlGenRandom correctly in ntsecapi.h wrapperCorinna Vinschen2016-12-145-6/+29
| | | | | | | Include ntsecapi.h where required and just redefine RtlGenRandom correctly in the ntsecapi.h wrapper. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Rearrange RNG code slightlyCorinna Vinschen2016-12-134-34/+52
| | | | | | | | | | | | | | | In preparation of exporting getentropy/getrandom to userspace, rearrange code a bit: - Define RtlGenRandom in ntdll.h. - Drop calls to getentropy in favor of RtlGenRandom (fhandler_socket, fhandler_dev_random). - Add try/except blocks in fhandler_dev_random to return EFAULT rather than crashing if buffer pointer is invalid. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: Add release messages for last two checkinsCorinna Vinschen2016-12-131-0/+7
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix incorrect path conversion on non-existent files on network sharesCorinna Vinschen2016-12-131-0/+7
| | | | | | | | | | | | | | | | | | NtOpenFile/NtCreateFile on non-existent paths on network drives has a bug. Assuming a path Z:\dir\file. Further assuming that Z:\dir does not exist. The first NtOpenFile("Z:\dir\file") correctly returns STATUS_OBJECT_PATH_NOT_FOUND. Subsequent calls incorrectly return STATUS_OBJECT_NAME_NOT_FOUND. This appears to be some kind of caching behaviour. Waiting a while before repeating the call correctly returns STATUS_OBJECT_PATH_NOT_FOUND again. This patch works around the observed misbehaviour. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Check for .exe file in cygwin_conv_pathCorinna Vinschen2016-12-131-2/+2
| | | | | | | | So far, when converting from POSIX to Windows notation, cygwin_conv_path fails to check for .exe suffix, so /path/foo did not return /path/foo.exe even if this file exists. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin 2.6.1: Add missing release textCorinna Vinschen2016-12-061-4/+16
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* path_conv: When encountering a ".(/)+" sequence, skip *all* slashesCorinna Vinschen2016-11-281-1/+6
| | | | | | | The original code only skipped the "./", but missed to test if more trailing slashes are present. This in turn leads to invalid conversion. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* regex: Fix typo in CHaddrangeCorinna Vinschen2016-11-241-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygutils: Fix resource leak in get_short_pathsCorinna Vinschen2016-11-241-0/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix typo in kill(1)Corinna Vinschen2016-11-241-1/+1
| | | | | | | buf is just a local buffer, sig is ultimately pointing to the signal string. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* _pinfo::set_ctty: Check potential NULL pointer in debug_printf statementCorinna Vinschen2016-11-241-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Eliminate unused parameter from path_conv::eq_workerCorinna Vinschen2016-11-241-12/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Remove redundant check for NULL pointer in cygwin_exception::dump_exceptionCorinna Vinschen2016-11-241-7/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix copy/paste typo in fhandler_console::scroll_buffer_screenCorinna Vinschen2016-11-241-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Don't allow sending invalid signals from user spaceCorinna Vinschen2016-11-241-12/+22
| | | | | | | | Don't allow signal 0 in signal(2), sigaction(2), siginterrupt(3). Don't allow any signal in sigqueue(3) but explicitely handle signal 0 as in kill(2). Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* raise: Add missing extern "C"Corinna Vinschen2016-11-241-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* login_tty: Rewrite following FreeBSD's tracesCorinna Vinschen2016-11-241-15/+8
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* fcwd_access_t: Add missing breaks in f_cwd pointer computationCorinna Vinschen2016-11-241-0/+3
| | | | | | Fixes Coverity CIDs 59893/59894 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add comments to intentional switch fallthroughsCorinna Vinschen2016-11-243-0/+7
| | | | | | Clarify Coverity "Missing break in switch" messages. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add length check creating domain\group stringsCorinna Vinschen2016-11-241-6/+6
| | | | | | Fix Coverity CID 153932 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Provide <memory.h>Sebastian Huber2016-11-221-15/+0
| | | | | | | | Provide <memory.h> for all standard Newlib targets and remove Cygwin-specific header. Most POSIX like systems provide this historic header. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Move pthread types to <sys/_pthreadtypes.h>Sebastian Huber2016-11-172-46/+59
| | | | | | | | | | This makes it possible provide operating system specific types for <pthread.h>. It is in line with the FreeBSD header file structure and allows a future cleanup of <pthread.h> to not expose unrelated things via <sys/types.h> and <unistd.h>. Glibc uses the similar <bits/pthreadtypes.h> for this purpose. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
* Add release note for commit 8a32c24Corinna Vinschen2016-11-171-0/+3
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Use allocation granularity as the 'page_size' in /proc/<pid>/status as well, ↵Erik M. Bray2016-11-161-1/+1
| | | | for consistency with /proc/<pid>/statm
* statm should report memory as multiples of allocation_granularity instead of ↵Erik M. Bray2016-11-161-1/+5
| | | | | | page_size that ensures that values in statm mupltiplied by POSIX _SC_PAGESIZE give the correct values
* Fix ShellExecuteW commentCorinna Vinschen2016-10-241-4/+3
| | | | | | | ShellExecuteW long path behaviour is now stable: It doesn't work since Windows 8.1. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* pldd: Fix resource leak and missing check if fopen failedCorinna Vinschen2016-10-231-0/+4
| | | | | | Fixes Coverity CID 66903 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* passwd: Fix potential buffer overflowCorinna Vinschen2016-10-231-1/+2
| | | | | | Fixes Coverity CID 66956 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* mkgroup/mkpasswd: Fix potential buffer overwrite in corner caseCorinna Vinschen2016-10-232-9/+15
| | | | | | Fixes Coverity CIDs 60076, 60077 and 60081 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* getfacl: Don't trust length of incoming user/groupnameCorinna Vinschen2016-10-231-2/+2
| | | | | | Fixes Coverity CIDs 60079 and 60080 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* tzset: Fix array length given to GetGeoInfoWCorinna Vinschen2016-10-231-1/+1
| | | | | | Fixes Coverity CID 66916 Signed-off-by: Corinna Vinschen <corinna@vinschen.de>