Provides and conflicts with msys2-runtime, so can be used to replace it if wanted. Keep this as a separate package to test for regressions in cygwin and to have (in theory) a runtime that supports 32bit in the repo. There is no guarantee for how long we are going to keep this.
51 lines
2.0 KiB
Diff
51 lines
2.0 KiB
Diff
From f975120d20d51ca11217e4abbf16cc51ab8c9290 Mon Sep 17 00:00:00 2001
|
|
From: Takashi Yano <takashi.yano@nifty.ne.jp>
|
|
Date: Sat, 22 Oct 2022 14:05:40 +0900
|
|
Subject: [PATCH 41/N] Cygwin: pty: Fix 'Bad address' error when running
|
|
'cmd.exe /c dir'
|
|
|
|
- If the command executed is 'cmd.exe /c [...]', runpath in spawn.cc
|
|
will be NULL. In this case, is_console_app(runpath) check causes
|
|
access violation. This case also the command executed is obviously
|
|
console app., therefore, treat it as console app to fix this issue.
|
|
|
|
Addresses: https://github.com/msys2/msys2-runtime/issues/108
|
|
|
|
This is a backport of 08281cf4cc (Cygwin: pty: Fix 'Bad address' error
|
|
when running 'cmd.exe /c dir', 2022-10-22).
|
|
|
|
The original patch that was replaced by this commit had this additional
|
|
information that is now sadly lost in Cygwin's history:
|
|
|
|
In 2b4f986e49 (Cygwin: pty: Treat *.bat and *.cmd as a non-cygwin
|
|
console app., 2022-07-31), we introduced a bug fix that specifically
|
|
looks for a suffix of the command's file name.
|
|
|
|
However, that file name might be set to `NULL`, namely when
|
|
`null_app_name == true`, which is the case when we detected a
|
|
command-line `cmd /c [...]`.
|
|
|
|
But the commit mentioned above did not account for that possibility,
|
|
instead assuming that it always has to check the file name for a `.bat`
|
|
or `.cmd` suffix. As a consequence, `cmd /c [...]` invocations are
|
|
completely broken in v3.3.6, resulting in a `Bad address` error.
|
|
|
|
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
|
|
---
|
|
winsup/cygwin/spawn.cc | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
|
|
index bc9dc5a..9636109 100644
|
|
--- a/winsup/cygwin/spawn.cc
|
|
+++ b/winsup/cygwin/spawn.cc
|
|
@@ -198,6 +198,8 @@ handle (int fd, bool writing)
|
|
static bool
|
|
is_console_app (WCHAR *filename)
|
|
{
|
|
+ if (filename == NULL)
|
|
+ return true; /* The command executed is command.com or cmd.exe. */
|
|
HANDLE h;
|
|
const int id_offset = 92;
|
|
h = CreateFileW (filename, GENERIC_READ, FILE_SHARE_READ,
|