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 | |
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')
-rw-r--r-- | scd/ChangeLog | 2 | ||||
-rw-r--r-- | scd/apdu.c | 13 |
2 files changed, 4 insertions, 11 deletions
diff --git a/scd/ChangeLog b/scd/ChangeLog index 6ae7da589..28fd31e17 100644 --- a/scd/ChangeLog +++ b/scd/ChangeLog @@ -1,5 +1,7 @@ 2009-03-18 Werner Koch <[email protected]> + * apdu.c (open_pcsc_reader_wrapped): Use close_all_fds. + * command.c (cmd_learn): Add option --keypairinfo. * app.c (app_write_learn_status): Add arg FLAGS. * app-common.h (struct app_ctx_s): Add arg FLAGS to LEARN_STATUS. 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", |