1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

scd: Fix DEVINFO to allow multiple clients.

* scd/app.c (initialize_module_command): Use O_NONBLOCK for pipe.

--

GnuPG-bug-id: 7151
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
NIIBE Yutaka 2024-09-18 13:44:53 +09:00
parent b08d990607
commit fc30f70596
No known key found for this signature in database
GPG Key ID: 640114AF89DE6054

View File

@ -25,6 +25,10 @@
#include <unistd.h>
#include <npth.h>
#ifndef HAVE_W32_SYSTEM
#include <fcntl.h> /* F_SETFD F_GETFL F_SETFL O_NONBLOCK fcntl(2) */
#endif
#include "scdaemon.h"
#include "../common/exechelp.h"
#include "iso7816.h"
@ -2654,6 +2658,11 @@ initialize_module_command (void)
log_error ("pipe creation failed: %s\n", gpg_strerror (ret));
return err;
}
/* There may be multiple clients for DEVINFO --watch.
* O_NONBLOCK allows multiple accesses, not blocking at read(2). */
if (fcntl (card_list_lock.notify_pipe[0], F_SETFL, O_NONBLOCK) < 0)
log_error ("fcntl failed: %s\n",
gpg_strerror (gpg_error_from_syserror ()));
#endif
return apdu_init ();