summaryrefslogtreecommitdiffstats
path: root/winsup
Commit message (Collapse)AuthorAgeFilesLines
* Cygwin: symlink_info::check: avoid assertion failureKen Brown2019-12-091-1/+2
| | | | | | | | | | | On certain error conditions there is a code snippet that checks whether the last component of the path has a trailing dot or space or a leading space. Skip this check if the last component is empty, i.e., if the path ends with a backslash. This avoids an assertion failure if the trailing backslash is the only backslash in the path, as is the case for a DOS drive 'X:\'. Addresses: https://cygwin.com/ml/cygwin/2019-12/msg00016.html
* Cygwin: /proc/[PID]/stat to pull process priority correctlyAnton Lavrentiev via cygwin-patches2019-12-021-2/+3
| | | | Fix to prior commit 5fa9a0e7 to address https://cygwin.com/ml/cygwin/2019-08/msg00082.html
* Cygwin: pty: Convert CamelCase names to snake_case names.Takashi Yano2019-11-188-60/+60
|
* Cygwin: pty: Trigger redraw screen if ESC[?3h or ESC[?3l is sent.Takashi Yano2019-11-151-0/+22
| | | | | | | | | | - Pseudo console clears console screen buffer if ESC[?3h or ESC[?3l is sent. However, xterm/vt100 does not clear screen. This cause mismatch between real screen and console screen buffer. Therefore, this patch triggers redraw screen in that situation so that the synchronization is done on the next execution of native app. This solves the problem reported in: https://www.cygwin.com/ml/cygwin-patches/2019-q4/msg00116.html
* Cygwin: console: Revise the code checking if the console is legacy.Takashi Yano2019-11-131-14/+15
| | | | | | | - Accessing shared_console_info before initializing causes access violation in checking if the console is legacy mode. This patch fixes this issue. This solves the problem reported in: https://www.cygwin.com/ml/cygwin-patches/2019-q4/msg00099.html
* Cygwin: pty: Use redraw screen instead of clear screen.Takashi Yano2019-11-133-16/+18
| | | | | | | | | | - Previously, pty cleared screen at startup for synchronization between the real screen and console screen buffer for pseudo console. With this patch, instead of clearing screen, the screen is redrawn when the first native program is executed after pty is created. In other words, synchronization is deferred until the native app is executed. Moreover, this realizes excluding $TERM dependent code.
* regtool: allow /proc/registry{,32,64}/ registry path prefixBrian Inglis2019-11-132-5/+19
| | | | | The user can supply the registry path prefix /proc/registry{,32,64}/ to use path completion.
* Cygwin: Doc change to note stackdump limit patchMark Geisert2019-11-081-0/+3
|
* Cygwin: Raise dumpstack frame limit to 32Mark Geisert2019-11-081-2/+4
| | | | Create a #define for the limit and raise it from 16 to 32.
* Cygwin: console, pty: Prevent error in legacy console mode.Takashi Yano2019-11-084-17/+46
|
* Cygwin: pty: Change how to determine if running as service or not.Takashi Yano2019-11-061-14/+3
|
* Cygwin: document console helper patchCorinna Vinschen2019-11-051-0/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: fix quoting when starting invisible console processCorinna Vinschen2019-11-051-5/+7
| | | | | | | | | | | | | | | | | | | | fhandler_console::create_invisible_console_workaround() does not use the lpApplicationName parameter and neglects to quote its command name on lpCommandLine in the call to CreateProcessW. Given CreateProcessW's brain-dead method to evaluate the application path given on the command line, this opens up a security problem if Cygwin is installed into a path with spaces in it. Fix this by using the lpApplicationName parameter and quoting of the application path in the lpCommandLine parameter (used as argv[0] in the called console helper. For extended paranoia, make the argument string array big enough to fit full 64 bit pointer values into it. Handles usually only use the lower 32 bit, but better safe than sorry. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: devices: drop MAX_CONSOLES and fix FH_CONS_MAXCorinna Vinschen2019-11-041-2/+1
| | | | | | | | FH_CONS_MAX should refelect the fact that we allow 128 consoles, even if it's unused. Suggested-by: Achim Gratz <Stromeko@nexgo.de> Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: fix process parent/child relationship after execveCorinna Vinschen2019-11-024-23/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 5a0f2c00aa "Cygwin: fork/exec: fix child process permissions" removed the PROCESS_DUP_HANDLE handle permission of the parent process handle in the child to avoid a security problem. It turned out that this broke the following scenario: If a process forks and then the parent execs, the child loses the ability to register the parent's death. To wit, after the parent died the child process does not set its own PPID to 1 anymore. The current exec mechanism copies required handle values (handles to keep contact to the child processes) into the child_info for the about-to-be-exec'ed process. The exec'ed process is supposed to duplicate these handles. This fails, given that we don't allow the exec'ed process PROCESS_DUP_HANDLE access to the exec'ing process since commit 5a0f2c00aa. The fix is to avoid the DuplicateHandle calls in the exec'ed process. This patch sets the affected handles to "inheritable" in the exec'ing process at exec time. The exec'ed process just copies the handle values and resets handle inheritance to "non-inheritable". The exec'ing process doesn't have to reset handle inheritance, it exits after setting up the exec'ed process anyway. Testcase: $ ssh-agent /bin/sleep 3 ssh-agent forks and the parent exec's sleep. After sleep exits, `ps' should show ssh-agent to have PPID 1, and eventually ssh-agent exits. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: getpriority() consistent with process priorityAnton Lavrentiev via cygwin-patches2019-10-311-1/+6
| | | | https://cygwin.com/ml/cygwin/2019-08/msg00122.html
* Cygwin: Provide more COM devicesAchim Gratz2019-10-232-613/+1727
| | | | | Provide for 128 COM devices since Windows likes to create lots of these over time (one per identifiable device and USB port).
* Cygwin: spawnvp, spawnvpe: fail if executable is not in $PATHKen Brown2019-10-182-3/+9
| | | | | | Call find_exec with the FE_NNF flag to enforce a NULL return when the executable isn't found in $PATH. Convert NULL to "". This aligns spawnvp and spawnvpe with execvp and execvpe.
* Cygwin: pty: Change the timing of clear screen.Takashi Yano2019-10-161-13/+13
|
* Cygwin: pty: Avoid detach console in the process running as service.Takashi Yano2019-10-161-0/+2
|
* Cygwin: mkdir and rmdir: treat drive names speciallyKen Brown2019-10-072-5/+32
| | | | | | | | | | | | If the directory name has the form 'x:' followed by one or more slashes or backslashes, and if there's at least one backslash, assume that the user is referring to 'x:\', the root directory of drive x, and don't strip the backslash. Previously all trailing slashes and backslashes were stripped, and the name was treated as a relative file name containing a literal colon. Addresses https://cygwin.com/ml/cygwin/2019-08/msg00334.html.
* Cygwin: document recent changes to format_proc_cpuinfoKen Brown2019-10-072-0/+6
|
* fhandler_proc.cc(format_proc_cpuinfo): or model extension bitsBrian Inglis2019-10-071-1/+1
| | | | | or model extension bits into model high bits instead of adding arithmetically like family extension.
* fhandler_proc.cc(format_proc_cpuinfo): comment flags not reportedBrian Inglis2019-10-071-15/+15
| | | | | Comment out flags not reported by Linux in cpuinfo, although some flags may not be used at all by Linux.
* fhandler_proc.cc(format_proc_cpuinfo): add feature flagsBrian Inglis2019-10-071-9/+229
| | | | | Add 99 feature flags including AVX512 extensions, AES, SHA with 20 cpuid calls.
* fhandler_proc.cc(format_proc_cpuinfo): use feature test print macroBrian Inglis2019-10-071-268/+153
| | | | | | | Add feature test print macro that makes feature, bit, and flag text comparison and checking easier. Handle as common former Intel only feature flags also supported on AMD. Change order and some flag names to agree with current Linux.
* fhandler_proc.cc(format_proc_cpuinfo): add microcodeBrian Inglis2019-10-071-5/+21
| | | | Add microcode from Windows registry Update Revision REG_BINARY.
* fhandler_proc.cc(format_proc_cpuinfo): add bogomipsBrian Inglis2019-10-071-1/+3
| | | | Add bogomips which has been cpu MHz*2 since Pentium MMX.
* fhandler_proc.cc(format_proc_cpuinfo): round cpu MHzBrian Inglis2019-10-071-0/+1
| | | | Round cpu MHz to correct Windows and match Linux cpuinfo.
* fhandler_proc.cc(format_proc_cpuinfo): fix AMD physical cores countBrian Inglis2019-10-071-2/+1
| | | | Fix AMD physical cores count documented as core_info low byte + 1.
* fhandler_proc.cc(format_proc_cpuinfo): fix cpuid level countBrian Inglis2019-10-071-1/+18
| | | | Fix cpuid level count as number of non-zero leafs excluding sub-leafs.
* fhandler_proc.cc(format_proc_cpuinfo): fix cache sizeBrian Inglis2019-10-071-27/+18
| | | | Fix cache size return code handling and make AMD/Intel code common.
* Cygwin: Fix signal handling issue introduced by PTY related change.Takashi Yano2019-10-031-1/+1
| | | | | | | - After commit 41864091014b63b0cb72ae98281fa53349b6ef77, there is a regression in signal handling reported in https://www.cygwin.com/ml/cygwin/2019-10/msg00010.html. This patch fixes the issue.
* Document the last bug fixKen Brown2019-09-271-0/+3
|
* Cygwin: normalize_win32_path: improve error checkingKen Brown2019-09-261-3/+6
| | | | | | | | | | | | | | If the source path starts with the Win32 long path prefix '\\?\' or the NT object directory prefix '\??\', require the prefix to be followed by 'UNC\' or '<drive letter>:\'. Otherwise return EINVAL. This fixes the assertion failure in symlink_info::check that was reported here: https://cygwin.com/ml/cygwin/2019-09/msg00228.html That assertion failure was caused by normalize_win32_path returning a path with no backslashes when the source path was '\\?\DRIVE'.
* Cygwin: pty: Fix PTY so that cygwin setup shows help with -h option.Takashi Yano2019-09-261-2/+2
| | | | | | | - After commit 169d65a5774acc76ce3f3feeedcbae7405aa9b57, cygwin setup fails to show help message when -h option is specified, as reported in https://cygwin.com/ml/cygwin/2019-09/msg00248.html. This patch fixes the problem.
* Document the last changeKen Brown2019-09-241-0/+3
|
* Cygwin: rmdir: fail if last component is a symlink, as on LinuxKen Brown2019-09-241-4/+25
| | | | | | | | | | | | If the last component of the directory name is a symlink followed by a slash, rmdir now fails, following Linux but not POSIX, even if the symlink resolves to an existing empty directory. mkdir was similarly changed in 2009 in commit 52dba6a5c45e8d8ba1e237a15213311dc11d91fb. Modify a comment to clarify the purpose of that commit. Addresses https://cygwin.com/ml/cygwin/2019-09/msg00221.html.
* Cygwin: remove old cruft from path_conv::checkKen Brown2019-09-211-13/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to commit b0717aae, path_conv::check had the following code: if (strncmp (path, "\\\\.\\", 4)) { /* Windows ignores trailing dots and spaces in the last path component, and ignores exactly one trailing dot in inner path components. */ char *tail = NULL; [...] if (!tail || tail == path) /* nothing */; else if (tail[-1] != '\\') { *tail = '\0'; [...] } Commit b0717aae0 intended to disable this code, but it inadvertently disabled only part of it. In particular, the declaration of the local tail variable was in the disabled code, but the following remained: if (!tail || tail == path) /* nothing */; else if (tail[-1] != '\\') { *tail = '\0'; [...] } [A later commit removed the disabled code.] The tail variable here points into a string different from path, causing that string to be truncated under some circumstances. See https://cygwin.com/ml/cygwin/2019-09/msg00001.html for more details. This commit fixes the problem by removing the leftover code that was intended to be removed in b0717aae.
* Cygwin: Fix incorrect TTY for non-cygwin process.Takashi Yano2019-09-202-5/+2
| | | | | | - After commit d4045fdbef60d8e7e0d11dfe38b048ea2cb8708b, the TTY displayed by ps command is incorrect if the process is non-cygwin process. This patch fixes this issue.
* Cygwin: console: Make console input work in GDB and strace.Takashi Yano2019-09-201-1/+1
| | | | | - After commit 2232498c712acc97a38fdc297cbe53ba74d0ec2c, console input cause error in GDB or strace. This patch fixes this issue.
* Cygwin: pty: Add missing guard when PTY is in the legacy mode.Takashi Yano2019-09-201-1/+4
|
* Cygwin: pty: Add charset conversion for console apps in legacy PTY.Takashi Yano2019-09-201-0/+7
|
* Cygwin: pty: Unify the charset conversion codes into a function.Takashi Yano2019-09-201-81/+49
|
* Cygwin: pty: Make GDB work again on pty.Takashi Yano2019-09-201-0/+35
|
* Cygwin: pty: Avoid potential segfault in PTY code when ppid = 1.Takashi Yano2019-09-201-2/+9
|
* Cygwin: console: Revive Win7 compatibility.Takashi Yano2019-09-193-7/+6
| | | | | - The commit fca4cda7a420d7b15ac217d008527e029d05758e broke Win7 compatibility. This patch fixes the issue.
* Cygwin: document last changeKen Brown2019-09-152-0/+7
|
* winsup/cygwin/times.cc (times): follow Linux and allow for a NULL buf argumentAchim Gratz2019-09-151-6/+11
| | | | | | Adresses the problem reported here: https://cygwin.com/ml/cygwin/2019-09/msg00141.html
* Cygwin: pty: Use autoload feature for pseudo console system calls.Takashi Yano2019-09-152-23/+16
| | | | | | - The autoload feature is used rather than GetModuleHandle(), GetProcAddress() for CreatePseudoConsole(), ResizePseudoConsole() and ClosePseudoConsole().