aboutsummaryrefslogtreecommitdiffstats
path: root/scd/apdu.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2009-03-19 07:09:31 +0000
committerWerner Koch <[email protected]>2009-03-19 07:09:31 +0000
commit588a7c34bb6cdffa8ec40d1e7fda047c5da38a61 (patch)
tree1399895643266c827878425babeb84039d6f4295 /scd/apdu.c
parentAdd server option with-ephemeral-keys. (diff)
downloadgnupg-588a7c34bb6cdffa8ec40d1e7fda047c5da38a61.tar.gz
gnupg-588a7c34bb6cdffa8ec40d1e7fda047c5da38a61.zip
Make sure not to leak file descriptors if running gpg-agent with a
command. Restore the signal mask to solve a problem in Mono.
Diffstat (limited to 'scd/apdu.c')
-rw-r--r--scd/apdu.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/scd/apdu.c b/scd/apdu.c
index bbd7ea801..dfddd3f72 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -57,6 +57,7 @@
#include "cardglue.h"
#else /* GNUPG_MAJOR_VERSION != 1 */
#include "scdaemon.h"
+#include "exechelp.h"
#endif /* GNUPG_MAJOR_VERSION != 1 */
#include "apdu.h"
@@ -81,11 +82,6 @@
#define DLSTDCALL
#endif
-#ifdef _POSIX_OPEN_MAX
-#define MAX_OPEN_FDS _POSIX_OPEN_MAX
-#else
-#define MAX_OPEN_FDS 20
-#endif
/* Helper to pass parameters related to keypad based operations. */
struct pininfo_s
@@ -1653,12 +1649,7 @@ open_pcsc_reader_wrapped (const char *portstr)
log_fatal ("dup2 stderr failed: %s\n", strerror (errno));
/* Close all other files. */
- n = sysconf (_SC_OPEN_MAX);
- if (n < 0)
- n = MAX_OPEN_FDS;
- for (i=3; i < n; i++)
- close(i);
- errno = 0;
+ close_all_fds (3, NULL);
execl (wrapperpgm,
"pcsc-wrapper",