4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-09 02:29:07 +08:00

498 Commits

Author SHA1 Message Date
Ken Brown
16baeb7fb7 Cygwin: mmap: document recent bugfix 2020-10-14 10:54:24 -04:00
Ken Brown
2d44ff3b84 Cygwin: FIFO: document recent fixes 2020-10-14 10:54:24 -04:00
Corinna Vinschen
25706d7f68 Cygwin: document previous poll/select patch
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:23 -04:00
David Allsopp
16bc04dabe Fix invalid acl_entry_t on 32-bit Cygwin
If the acl_t struct was at or above 0x80000000 then the pointer was
sign-extended to 0xffff_ffff_8000_0000 and so the index was lost.

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
2020-10-14 10:54:22 -04:00
Corinna Vinschen
279b4f773e Cygwin: add microcode patch to release messages
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:22 -04:00
Corinna Vinschen
5216ec9458 Cygwin: fix buffer overrun in cygwin_strcasecmp
sys_mbstowcs is called with the destination buffer length
set to MaximumLength from the receiving UNICODE_STRING buffer.
This is twice as much as the actual size of the buffer in
wchar_t units, which is the unit expected by sys_mbstowcs.

sys_mbstowcs always attaches a NUL, within the destination
buffersize given.  But if the string is exactly one wchar_t
less than the actual buffer, and the buffersize is given too
large, sys_mbstowcs writes a NUL one wchar_t beyond the buffer.

This has only been exposed with Cygwin 3.1.5 because alloca
on newer gcc 9 apparently allocates more tightly.  The alloca
buffer here is requested with 16 bytes, which is exactly the
number of bytes required for the string L"cmd.exe".  Older gcc
apparently allocated a few more bytes on the stack, while gcc 9
allocates in 16 byte granularity...

Fix this by giving the correct destination buffer size to
sys_mbstowcs.

Fixes: https://cygwin.com/pipermail/cygwin/2020-June/245226.html
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:22 -04:00
Corinna Vinschen
26338189a8 Cygwin: add new IPPROTO_TCP options to release notes
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:22 -04:00
Ken Brown
a2627c34dc Cygwin: stat: fix st_mode of fifos again
This partially reverts commit
f36262d56ac78f04de147746ce4a85c6155e4a23.  That commit incorrectly
made the st_mode of a fifo reflect the Windows permissions of the disk
file underlying the fifo.
2020-10-14 10:54:20 -04:00
Corinna Vinschen
cccf5ea102 Cygwin: add pseudo console patch to release text
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:19 -04:00
Ken Brown
b9e1c4537e Document recent FIFO changes 2020-10-14 10:54:19 -04:00
Corinna Vinschen
9a8768233e Cygwin: add release message for fixed floppy bugs
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:17 -04:00
Corinna Vinschen
b949568678 Cygwin: symlinks: create WSL symlinks on supporting filesystems
WSL symlinks are reparse points containing a POSIX path in UTF-8.
On filesystems supporting reparse points, use this symlink type.
On other filesystems, or in case of error, fall back to the good
old plain SYSTEM file.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:16 -04:00
Corinna Vinschen
31c3c0e306 Cygwin: symlinks: support WSL symlinks
Treat WSL symlinks just like other symlinks.  Convert
absolute paths pointing to Windows drives via
/mnt/<driveletter> to Windows-style paths <driveletter>:

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:16 -04:00
Corinna Vinschen
c43952da4e Cygwin: ioctl: TIOCINQ: always return number of chars in the inbound queue
So far ioctl(TIOCINQ) could end up returning -1 with errno set to EINVAL
if a non-zero device error mask has been returned by ClearCommError.
This doesn't reflect Linux behaviour, which always returns the number of
chars in the inbound queue, independent of any I/O error condition.
EINVAL was a pretty weird error code to use in this scenario, too.

Fix this by dropping all checking for device errors in the TIOCINQ
case.  Just return the number of chars in the inbound queue.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:13 -04:00
Takashi Yano
5ce1b29320 Cygwin: console: Fix segfault on shared_console_info access.
- Accessing shared_console_info before initialization causes access
  violation because it is a NULL pointer. The cause of the problem
  reported in https://cygwin.com/ml/cygwin/2020-02/msg00197.html is
  this NULL pointer access in request_xterm_mode_output() when it is
  called from close(). This patch makes sure that shared_console_info
  is not NULL before calling request_xterm_mode_output().
2020-10-14 10:54:12 -04:00
Corinna Vinschen
9f8092e407 Cygwin: add release message for NUL character bugs
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:12 -04:00
Corinna Vinschen
fe86a2418d Cygwin: add @cjksingle to release docs
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:12 -04:00
Corinna Vinschen
c9034b0b8b Cygwin: rename NSIG to _NSIG, change visibility of NSIG to MISC
NSIG is a deprecated symbol only visible under MISC visibility.
_NSIG is used widely instead, and on most systems NSIG is
defined in terms of _NSIG.

Follow suit: Change NSIG to _NSIG throughout and change visiblity
of NSIG to be defined only in __MISC_VISIBLE case.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:12 -04:00
Corinna Vinschen
1616052984 Cygwin: move 3.1.3 to 3.1.4 release document
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:12 -04:00
Ken Brown
4d6eb9dcd6 Cygwin: document recent changes 2020-10-14 10:54:10 -04:00
Corinna Vinschen
d15e19a914 add pseudo console fixes to release text
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:08 -04:00
Ken Brown
b300e8dc04 Cygwin: document recent changes 2020-10-14 10:54:07 -04:00
Ken Brown
c46dacee36 Cygwin: normalize_win32_path: allow drive without trailing backslash
Commit 283cb372, "Cygwin: normalize_win32_path: improve error
checking", required a prefix '\\?\' or '\??\' in the source path to be
followed by 'UNC\' or 'X:\', where X is a drive letter.  That was too
restrictive, since it disallowed the paths '\\?\X: and '\??\X:'.  This
caused problems when a user tried to use the root of a drive as the
Cygwin installation root, as reported here:

  https://cygwin.com/ml/cygwin/2020-01/msg00111.html

Modify the requirement so that '\??\X:' and '\\?\X:' are now allowed
as source paths, without a trailing backslash.
2020-10-14 10:54:07 -04:00
Takashi Yano
1abce13d61 Cygwin: pty: Revise the code for setting code page of pseudo console.
- Fix the problem which overrides the code page setting, reported
  in https://www.cygwin.com/ml/cygwin/2019-12/msg00292.html.
2020-10-14 10:54:07 -04:00
Mark Geisert
e810ee7e49 Cygwin: Add missing Linux #define of CPU_SETSIZE
Though our implementation of cpu sets doesn't need it, software from
Linux environments expects this definition to be present.  It's
documented on the Linux CPU_SET(3) man page but was left out due to
oversight.

Addresses https://cygwin.com/ml/cygwin/2019-12/msg00248.html
2020-10-14 10:54:06 -04:00
Corinna Vinschen
c7c6eadf08 Cygwin: add 3.1.2 release text
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:06 -04:00
Corinna Vinschen
88a3d3463e Cygwin: add 3.1.1 release text belatedly
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:05 -04:00
Corinna Vinschen
f2b4f12277 Cygwin: add strtold fix to release message
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:05 -04:00
Corinna Vinschen
9ccc706bdd Cygwin: ilogbl: Make sure to return FP_ILGB0 on zero input
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:05 -04:00
Ken Brown
145fffb706 Cygwin: document the last bugfix 2020-10-14 10:54:05 -04:00
Mark Geisert
2fd6bf96b9 Cygwin: Doc change to note stackdump limit patch 2020-10-14 10:54:04 -04:00
Corinna Vinschen
7d4221d00a Cygwin: document console helper patch
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:54:04 -04:00
Corinna Vinschen
e55f6ad713 Cygwin: fix process parent/child relationship after execve
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>
2020-10-14 10:54:04 -04:00
Ken Brown
418dd3f508 Cygwin: spawnvp, spawnvpe: fail if executable is not in $PATH
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.
2020-10-14 10:54:03 -04:00
Ken Brown
1e8370c1c1 Cygwin: mkdir and rmdir: treat drive names specially
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.
2020-10-14 10:54:03 -04:00
Ken Brown
faf0c0f8b0 Cygwin: document recent changes to format_proc_cpuinfo 2020-10-14 10:54:03 -04:00
Ken Brown
632f2bbbfc Document the last bug fix 2020-10-14 10:54:02 -04:00
Ken Brown
18cb14020e Document the last change 2020-10-14 10:54:01 -04:00
Ken Brown
1daa31008a Cygwin: document last change 2020-10-14 10:54:01 -04:00
Corinna Vinschen
4255526195 Cygwin: add W10 pseudo console support to release notes
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:53:59 -04:00
Corinna Vinschen
5993fdab0b Revert "Cygwin: fix potential SEGV in sigwaitinfo/signalfd scenario"
This reverts commit 92115a83a4579635e253be2887d3706d28b477fd.

This was utterly wrong.
2020-10-14 10:53:59 -04:00
Corinna Vinschen
cb1469277a Cygwin: fix potential SEGV in sigwaitinfo/signalfd scenario
On sigwaitinfo or reading from a signalfd, signal processing sets up
signal handling via sigdelayed even if the handler address is NULL.
This doesn't have any impact on sigwaitinfo scenarios (or at least, I
wasn't able to come up with a reproducer) but it breaks signalfd
scenarios, where eventually a call to call_signal_handler from
sigdelayed will try to call the NULL function.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:53:58 -04:00
Corinna Vinschen
8f9ccad72c Cygwin: drop preliminary 3.0.8 release file
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:53:58 -04:00
Corinna Vinschen
5b50e403a4 Cygwin: add missing bugfix release messages for 3.1.0
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:53:57 -04:00
Mark Geisert
bb7eb423b2 Cygwin: Implement CPU_SET(3) macros
This patch supplies an implementation of the CPU_SET(3) processor
affinity macros as documented on the relevant Linux man page.

There is a mostly superset implementation of cpusets under newlib's
libc/sys/RTEMS/include/sys that has Linux and FreeBSD compatibility
and is built on top of FreeBSD bitsets.  This Cygwin implementation
and the RTEMS one could be combined if desired at some future point.
2020-10-14 10:53:57 -04:00
Corinna Vinschen
cea4d92780 Cygwin: Export newlib ndbm functions
Signed-off-by: Corinna Vinschen <corinna-cygwin@cygwin.com>
2020-10-14 10:53:57 -04:00
Ken Brown
f5b381ff56 Cygwin: document the last bug fix 2020-10-14 10:53:56 -04:00
Ken Brown
aeb38a24af Cygwin: add release notes for 3.0.8 2020-10-14 10:53:56 -04:00
Corinna Vinschen
5e3733ac79 Cygwin: sigpending: don't report pending signals for other threads
The sigpending mechanism failed to check if the pending signal was a
process-wide signal, or a signal for the curent thread.  Fix that by
adding a matching conditional to wait_sig's __SIGPENDING code.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2020-10-14 10:53:55 -04:00
Ken Brown
7faf75c189 Tweak release message 2020-10-14 10:53:55 -04:00