curl: apply eventfd free patch (#373692)
This commit is contained in:
parent
d7bc610521
commit
9d9ddb55ca
33
pkgs/by-name/cu/curlMinimal/fix-eventfd-free.patch
Normal file
33
pkgs/by-name/cu/curlMinimal/fix-eventfd-free.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From ff5091aa9f73802e894b1cbdf24ab84e103200e2 Mon Sep 17 00:00:00 2001
|
||||
From: Andy Pan <i@andypan.me>
|
||||
Date: Thu, 12 Dec 2024 12:48:56 +0000
|
||||
Subject: [PATCH] async-thread: avoid closing eventfd twice
|
||||
|
||||
When employing eventfd for socketpair, there is only one file
|
||||
descriptor. Closing that fd twice might result in fd corruption.
|
||||
Thus, we should avoid closing the eventfd twice, following the
|
||||
pattern in lib/multi.c.
|
||||
|
||||
Fixes #15725
|
||||
Closes #15727
|
||||
Reported-by: Christian Heusel
|
||||
---
|
||||
lib/asyn-thread.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
|
||||
index a58e4b790494..32d496b107cb 100644
|
||||
--- a/lib/asyn-thread.c
|
||||
+++ b/lib/asyn-thread.c
|
||||
@@ -195,9 +195,11 @@ void destroy_thread_sync_data(struct thread_sync_data *tsd)
|
||||
* close one end of the socket pair (may be done in resolver thread);
|
||||
* the other end (for reading) is always closed in the parent thread.
|
||||
*/
|
||||
+#ifndef USE_EVENTFD
|
||||
if(tsd->sock_pair[1] != CURL_SOCKET_BAD) {
|
||||
wakeup_close(tsd->sock_pair[1]);
|
||||
}
|
||||
+#endif
|
||||
#endif
|
||||
memset(tsd, 0, sizeof(*tsd));
|
||||
}
|
||||
@ -63,6 +63,12 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-x8p9tIsJCXQ+rvNCUNoCwZvGHU8dzt1mA/EJQJU2q1Y=";
|
||||
};
|
||||
|
||||
# FIXME: avoid rebuilding darwin stdenv for now
|
||||
patches = lib.optionals (!stdenv.isDarwin) [
|
||||
# https://github.com/curl/curl/issues/15725
|
||||
./fix-eventfd-free.patch
|
||||
];
|
||||
|
||||
# this could be accomplished by updateAutotoolsGnuConfigScriptsHook, but that causes infinite recursion
|
||||
# necessary for FreeBSD code path in configure
|
||||
postPatch = ''
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user