1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-04-12 22:11:29 +02:00

scd,w32: Fix posssible lockup due to lost select results.

* scd/scdaemon.c (handle_connections) [W32]: Do not continue the loop
when an event was encountered.
--

Here the event handle is passed to npth_eselect so that this function
can detect the event and reset the event.  There is no need to consume
this information here.  However, npth_select might also got a ready
file descriptor along with the event and by doing a "continue" we
would miss the ready state of the file descriptor.  The fix is to do
nothing here, similar to what we do in gpg-agent.

Fixes-commit: f9acc7d18bb90f47dafe7e32ae92f567756d6b12
GnuPG-bug-id: 2982
(cherry picked from commit a7ec3792c5d1891180265c946bc021cd8a205e54)
This commit is contained in:
Werner Koch 2025-03-14 14:04:36 +01:00
parent e212308ede
commit 9448d01d61
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B

View File

@ -1395,8 +1395,11 @@ handle_connections (gnupg_fd_t listen_fd)
ret = npth_eselect (nfd+1, &read_fdset, NULL, NULL, t,
events, &events_set);
saved_errno = errno;
if (events_set & 1)
continue;
if ((events_set & 1))
{
if (opt.debug)
log_debug ("the_event seen and reset by npth_eselect\n");
}
#endif
if (ret == -1 && saved_errno != EINTR)