MSYS2-packages/msys2-runtime/0060-Cygwin-pipe-Give-up-to-use-query_hdl-for-non-cygwin-.patch
Johannes Schindelin 73b702e3d1 msys2-runtime: some backports
This corresponds to https://github.com/msys2/msys2-runtime/pull/205.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2024-04-07 21:21:01 +02:00

44 lines
1.7 KiB
Diff

From 436c8752437af86d24712a5a95b78fecde3ad35b Mon Sep 17 00:00:00 2001
From: Takashi Yano <takashi.yano@nifty.ne.jp>
Date: Sun, 3 Mar 2024 14:09:07 +0900
Subject: [PATCH 60/N] Cygwin: pipe: Give up to use query_hdl for non-cygwin
apps.
Non-cygwin app may call ReadFile() which makes NtQueryObject() for
ObjectNameInformation block in fhandler_pipe::get_query_hdl_per_process.
Therefore, stop to try to get query_hdl for non-cygwin apps.
Addresses: https://github.com/msys2/msys2-runtime/issues/202
Backported-from: https://inbox.sourceware.org/cygwin-patches/20240303050915.2024-1-takashi.yano@nifty.ne.jp/
Fixes: b531d6b06eeb ("Cygwin: pipe: Introduce temporary query_hdl.")
Reported-by: Alisa Sireneva, Johannes Schindelin <Johannes.Schindelin@gmx.de>
Reviewed-by:
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
winsup/cygwin/fhandler/pipe.cc | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/winsup/cygwin/fhandler/pipe.cc b/winsup/cygwin/fhandler/pipe.cc
index 283319c..9319a57 100644
--- a/winsup/cygwin/fhandler/pipe.cc
+++ b/winsup/cygwin/fhandler/pipe.cc
@@ -1251,6 +1251,16 @@ fhandler_pipe::get_query_hdl_per_process (WCHAR *name,
for (LONG i = (LONG) n_process - 1; i >= 0; i--)
{
+ /* Non-cygwin app may call ReadFile() which makes NtQueryObject()
+ for ObjectNameInformation block. Therefore, stop to try to get
+ query_hdl for non-cygwin apps. */
+ pid_t cygpid;
+ if (!(cygpid = cygwin_pid (proc_pids[i])))
+ continue;
+ pinfo p (cygpid);
+ if (p && ISSTATE (p, PID_NOTCYGWIN))
+ continue;
+
HANDLE proc = OpenProcess (PROCESS_DUP_HANDLE
| PROCESS_QUERY_INFORMATION,
0, proc_pids[i]);