diff options
author | Werner Koch <[email protected]> | 2009-03-19 07:09:31 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2009-03-19 07:09:31 +0000 |
commit | 588a7c34bb6cdffa8ec40d1e7fda047c5da38a61 (patch) | |
tree | 1399895643266c827878425babeb84039d6f4295 /scd/apdu.c | |
parent | Add server option with-ephemeral-keys. (diff) | |
download | gnupg-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.c | 13 |
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", |