From 588a7c34bb6cdffa8ec40d1e7fda047c5da38a61 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 19 Mar 2009 07:09:31 +0000 Subject: Make sure not to leak file descriptors if running gpg-agent with a command. Restore the signal mask to solve a problem in Mono. --- scd/ChangeLog | 2 ++ scd/apdu.c | 13 ++----------- 2 files changed, 4 insertions(+), 11 deletions(-) (limited to 'scd') 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 + * 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", -- cgit v1.2.3