Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-04-06Cygwin: add latest signal handling fixes to release notescygwin-3_0_6-releaseCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-04-05Cygwin: signals: setcontext: fix setting sigmaskCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-04-05Cygwin: signals: make setcontext work from signal handlersCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-04-05Cygwin: signals: restore sigmask from context given to signal handlerCorinna Vinschen
In case SA_SIGINFO flag is given, the signal handler may change the context and the application is supposed to pick up from the changed context. So far we don't do that, so the context given to the signal handler is basically read-only, unless the signal handler calls setcontext or swapcontext. For a start, restore the thread's signal mask from the uc_sigmask value of the context given to the signal handler. If that's feasible for Cygwin, we restore the entire context from the context changed by the signal handler in a followup patch. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-04-02Cygwin: winpids: Fix getting process multiple times, take 2Corinna Vinschen
commit d1be0a59d48222d8ea6261ee3e59de2bc3d149e4, "Cygwin: winpids: Fix getting process multiple times" fixed duplicate processes in ps -W output, but it fixed the symptom, not the cause. It also didn't fix the problem that the `ps' process itself may show up twice in its own output. This patch fixes it. The spawn worker only deleted the "winpid.PID" symlink of the current process if the child is a non-Cygwin process, under the assumption that the exec'ing process exits anyway. However, the Window in which both winpid.PID symlinks point to the same cygpid.PID area is just too long. The spawn worker now also deletes its own winpid.PID symlink if the exec'ed process is a Cygwin process. Additionally the fix from d1be0a59d48222d8ea6261ee3e59de2bc3d149e4 is now performed on the calling process, too. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-31Cygwin: bump version to 3.0.6Corinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-31Cygwin: document ps -W duplication bug fixcygwin-3_0_5-releaseCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-27Cygwin: fix: seteuid32() must return EPERM if privileges are not held.J.H. van de Water
Starting w/ the intro of S4U, seteuid32() calls lsaprivkeyauth(), then s4uauth(). s4uauth calls LsaRegisterLogonProcess(). LsaRegisterLogonProcess fails w/ STATUS_PORT_CONNECTION_REFUSED, if the proper privileges are not held. Because of RtlNtStatusToDosError(), this status would be mapped to ERROR_ACCESS_DENIED, which in turn would map to EACCES. Therefore it is useless to add this status to errmap[] (errno.cc), as s4auauth() should return EPERM as errno here (i.e. if process is not privileged). Hence the kludge. Before the intro of S4U, seteuid32() called lsaprivkeyauth(), then lsaauth(), then create_token(). Before the intro of Vista, the latter would have called NtCreateToken(). NtCreateToken() would have failed w/ STATUS_PRIVILEGE_NOT_HELD for a process w/o the proper privileges. In that case, calling seteuid32() would have returned EPERM (as required). Since the intro of Vista, and if the process had been started from an UNelevated shell, create_token() does NOT reach NtCreateToken()! As create_token() failed to properly set errno in that case, calling seteuid32() would return errno as set by lsaauth(), i.e. EACCES, not in agreement w/ Posix (a bug which was present for years). (lsaauth() called LsaRegisterLogonProcess() which would fail)
2019-03-27Cygwin: winpids: Fix getting process multiple timesCorinna Vinschen
Switching to Cywin-only PIDs introduced a new problem when collecting Cygwin processes for `ps -W': A process can show up multiple times again, if the Cygwin procinfo has been opened for a just execing process. The execed process then shows up twice, once as Cygwin process, but with the wrong Windows PID of the execing process, once as Windows-only process. The mechanism used to exclude these stray processes didn't work with the new Cygwin pid handling anymore. To fix this * check if the incoming Windows PID is the same as the PID in the procinfo. If not, we have the PID of the execing process while procinfo was already changed, * always check if the process has already been handled, not only for processes we got a procinfo for, * simplify adding pid to pidlist since pid is now always correct. While at it, fix comments and comment formatting. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-25Add missing includes.Andrew Stubbs
These missing includes were causing build warnings, but also a real bug in which the "size" parameter to "write" was being passed in 32-bit, whereas it ought to be 64-bit. This led to intermittent bad behaviour.
2019-03-25get and convert boot time once and use as neededBrian Inglis
2019-03-25default ps -W process start time to system boot time when inaccessible, 0, -1Brian Inglis
2019-03-25Cygwin: ctrl_c_handler: Use 64 bit timerCorinna Vinschen
Just don't use GetTickCount for obvious reasons Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-23Cygwin: sys/cygwin.h: fix formattingCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-23Cygwin: strace: print windows and cygwin pid in event outputCorinna Vinschen
strace only printed the Windows PID in event output so far. Especially now that Windows and Cygwin PID are decoupled, the strace user might like to see the Cygwin pid in event output as well. However, at process startup, the process might not have a Cygwin PID yet. To mitigate this, always print the Windows PID and only add the Cygwin pid if it exists. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-19Cygwin: wcsxfrm_l: Only byte swap if dest size is > 0Corinna Vinschen
commit c0d7d3e1a2fa96db15613cbd68a68c96966bc402 removed the usage of the LCMAP_BYTEREV flag in the call to LCMapStringW to workaround a strange bug in LCMapStringW. This patch didn't take a userspace call of wcsxfrm{_l} with NULL buffer and 0 size to evaluate the required buffer size into account. This introduced a crash trying to byte swap the NULL buffer. This patch fixes that problem. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-18AMD GCN: Implement circular buffering.Andrew Stubbs
The GCN port outputs stdout and stderr via a shared-memory interface. Previously the buffer was limited to 1000 write operations, which was enough for testing purposes, but easy to exhaust. This patch implements a new circular buffering system allowing a greater amount of output. The interface must allow hundreds of hardware threads to output simultaneously. The new limit is UINT32_MAX write operations. Unfortunately, there's no way to tell if the host side has also been updated. This code will misbehave unless the gcn-run from GCC is also updated (although it's fine the other way around), but that patch has already been committed. OK? Andrew Stubbs Mentor Graphics / CodeSourcery
2019-03-18Cygwin: proc: fix /proc/version output after uname changeCorinna Vinschen
3.0.0 changed uname but missed to align /proc/version which then used the old uname function on the new uname struct. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-18Cygwin: bump version to 3.0.5Corinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-14Add semihosting docs for nios2 and m68kcygwin-3_0_4-releaseJeff Johnston
Author: Sandra Loosemore <sandra@codesourcery.com> Date: Wed Mar 13 20:22:16 2019 -0700 Add semihosting documentation for nios2 and m68k. QEMU maintainers have asked for a specification of the nios2 semihosting interface. Since it's essentially a copy of the m68k implementation, this patch adds a document for that target as well.
2019-03-13Cygwin: acls: allow converting empty acl to textCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-13Cygwin: proc: add missing LF to /proc/<PID>/stat outputCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: ps: simplify codeCorinna Vinschen
Always use NtQuerySystemInformation(SystemProcessIdInformation). This drops two code paths calling NtQueryInformationProcess or GetModuleFileNameExW and only requires to open the process to fetch system time info. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: ps: show *all* processes in ps -W outputCorinna Vinschen
There's a long-standing bug in ps -W. It only shows processes which ps can open with PROCESS_QUERY_LIMITED_INFORMATION permissions. However, that fails for a lot of system processes. Due to that, output is basically restricted to processes in the same session, as well as Cygwin processes... which isn't *quite* what ps -W was supposed to do. Basically we only need to open the process to fetch the image name. If that fails, utilize the undocumented SystemProcessIdInformation info class introduced with Windows Vista, which allows to fetch the image name by specifying the PID. Restructure the code a bit. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: ntdll.h: Add SystemProcessIdInformationCorinna Vinschen
Add SystemProcessIdInformation to SYSTEM_INFORMATION_CLASS and define struct _SYSTEM_PROCESS_ID_INFORMATION. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: loadavg: improve debugging of load_initCorinna Vinschen
When logging in via ssh with an unprivileged account, PdhAddEnglishCounter returns with status 0x800007D0, PDH_CSTATUS_NO_MACHINE. We didn't find any workaround but the changes to improve debugging output may help in future. Using UNICODE instead of ANSI functions is a result of trying to fix this problem. Also drop the prototype workaround for PdhAddEnglishCounterA. It's not required anymore since Mingw-w64's pdh.h catched up. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: add /proc changes to release notesCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: fork/exec: Allow all users PROCESS_QUERY_LIMITED_INFORMATIONCorinna Vinschen
Create process with standard rights, plus PROCESS_QUERY_LIMITED_INFORMATION for authenticated users. This allows to fetch basic process information and thus /proc/<PID>/stat to succeed on foreign processes. While at it, fix formatting in CreateProcess calls. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: proc: let stat info always succeedCorinna Vinschen
There's no good reason to return blank if some of the info couldn't be collected. Drop useless call collecting SystemProcessorPerformanceInformation. Always return some valid start_time, even if we couldn't collect ProcessTimes. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: proc: don't request PROCESS_VM_READ perms for statCorinna Vinschen
The OpenProcess call to generate /proc/<PID>/stat info requests PROCESS_VM_READ, but that's not required. Drop it. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-12Cygwin: proc: return more useful cmdlineCorinna Vinschen
Creating /proc/<PID>/cmdline requires permissions to communicate with the target process via its signal pipe. If that fails, the output is "<defunct>" which doesn't make sense most of the time. Rather, call format_process_exename in this case to get more useful process name info, albeit not the full cmdline. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-11Cygwin: fix permissions of winpid symlinksCorinna Vinschen
The winpid symlinks got created with no query permissions, so only admins could see all Cygwin processes. Create symlinks so everyone has query permissions instead. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-09Cygwin: bump version to 3.0.4Corinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-08Cygwin: posix timers: fix a deadlockcygwin-3_0_3-releaseCorinna Vinschen
Canceling the timer thread runs under lock. The thread uses the same lock to guard its timer_tracker struct access. If the timing is bad, timer_settime or timer_delete grab the lock at the same time, the timer expires. In the end, cancel waits for the thread sync while the thread waits for ther lock to be released. Fix this by not waiting for the thread sync under lock. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-07Cygwin: posix timers: fix resource leakCorinna Vinschen
On setting the timer, the thread is accidentally only canceled when disarming the timer. This leaks one thread per timer_settimer call. Move the thread cancellation where it belongs. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-05Cygwin: bump version to 3.0.3Corinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-04Cygwin: seteuid: do not verify lsaprivkeyauth tokencygwin-3_0_2-releaseCorinna Vinschen
We don't support setting groups via /etc/groups anymore. Also, the initgroups group list is created via S4U, so we have "Interactive" vs. "Network" token, an artificial and entirely irrelevant difference. So, "verifying" the lsaprivkeyauth token may lead to rejecting a prefectly valid token. Just remove the verify_token call. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-04Revert "Cygwin: load_user_profile: temporarily extend debug output"Corinna Vinschen
This reverts commit 6aef5a46d7f22841e6a859103bb3f8acea060b84.
2019-03-04Cygwin: Revert attempting to unload user profile after useCorinna Vinschen
Revert "Cywin: user profile: unload impersonation user profile on exit" Revert "Cygwin: seteuid: allow inheriting impersonation user profile handle" Revert "Cygwin: user profile: add debug output to unload_user_profile" Revert "Cygwin: user profile: Make an effort to unload unused user profiles" This reverts commit bcb33dc4f0552e749dcb6c44e1ef7815b5db75a1. This reverts commit dd3730ed9c1c78176f1aab1b429bb5a105d90a44. This reverts commit 8eee25241e86fc596acde25c7c53723b75afee30. This reverts commit 71b8777a7140b79942d6e5079818cad2c3f5f07f. This patchset actually results in the following problem: - After a couple of ssh logon/logoff attempts, an interactive session of the same user loging in, is broken. Apparently UnloadUserProfile manages to unload the user's profile even while a parallel interactive session still uses the user's profile. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-04Cygwin: update 3.0.2 release fileCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-04Cygwin: doc: update case-sensitive dirs descriptionCorinna Vinschen
Since we have to disable automatic case-sensitive mkdir again, change documentation accordingly. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-03Cygwin: fork: fix child process permissions, take 3Corinna Vinschen
Per MSDN VirtualQueryEx requires PROCESS_QUERY_INFORMATION. Testing showed that PROCESS_QUERY_LIMITED_INFORMATION is sufficient since Windows 8.1. The assumption that Windows 8 is the same as Windows 8 was not correct, it requires PROCESS_QUERY_INFORMATION as well. Fix that by splitting the Windows 8 wincaps into one for Windows 8 and one for Windows 8.1. Set needs_query_information for Windows 8. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-02Cygwin: load_user_profile: Don't give primary domain to ldapCorinna Vinschen
If the user domain is the primary domain, LDAP is supposed to use the default naming context. This is accomplished by setting domain name to NULL in the call to cyg_ldap::fetch_ad_account. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-02Cygwin: ldap: Fix overwriting domain when creating naming contextCorinna Vinschen
cyg_ldap::fetch_ad_account creates a naming context from the incoming domain, if it's not NULL. The algorithm overwrites dots with \0 in domain while creating the naming context, but neglects to restore the dots. Fix that by never overwriting the incoming domain name. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-01Cygwin: fenv.h: Add feature test macros, fix valuesCorinna Vinschen
- feenableexcept,fedisableexcept, fegetexcept are GNU-only - fegetprec, fesetprec are Solaris, use __MISC_VISIBLE - _feinitialise is Cygwin-internal only - Replace self-named FP precision values to values from http://www.open-std.org/jtc1/sc22//WG14/www/docs/n752.htm as used by Solaris. - Change return value of fesetprec to adhere to the above document and Solaris. - Document fegetprec, fesetprec as Solaris functions, not as GNU functions Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-01Cygwin: authentication: Always initialize domain infoCorinna Vinschen
...before calling any of its method. It's no safe bet that it's already initialized when calling s4uauth and adding it to load_user_profile certainly doesn't hurt. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-01Cygwin: load_user_profile: use local pointer when appropriateCorinna Vinschen
dnsdomain does not have to be a copy of the domain, a pointer into cygheap is sufficient. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-01Cygwin: load_user_profile: fix use-after-free issueCorinna Vinschen
In case of a local machine account login, pi.lpProfilePath points to the buffer returned by NetUserGetInfo, but NetApiBufferFree is called prior to calling LoadUserProfileW. Fix by copying over usri3_profile to the local userpath buffer, just as in the AD case. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-01Cygwin: load_user_profile: temporarily extend debug outputCorinna Vinschen
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2019-03-01Cygwin: s4uauth: drop fallback to MsV1_0 if Kerberos failsCorinna Vinschen
This never really worked. While at it, restructure code to do common stuff only in one spot. Improve debug output. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>