From 67c957dbac1d656930c241b9fcd017a880dac033 Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Tue, 7 Apr 2009 21:30:18 -0400 Subject: [PATCH] Fixed pwmd_get_fds() when doing an ASYNC_CMD_OPEN2 when the file was cached or a new one. --- src/libpwmd.c | 4 ++++ src/pwmc.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/libpwmd.c b/src/libpwmd.c index 61bca16d..a247b114 100644 --- a/src/libpwmd.c +++ b/src/libpwmd.c @@ -2551,6 +2551,10 @@ async1: #ifdef WITH_PINENTRY case ASYNC_CMD_OPEN2: case ASYNC_CMD_SAVE2: + /* The command has already completed (cached or new). */ + if (pwm->state == ASYNC_DONE) + return 0; + if (pwm->nb_fd == -1) return GPG_ERR_INV_STATE; diff --git a/src/pwmc.c b/src/pwmc.c index f057e134..69e5c3ca 100644 --- a/src/pwmc.c +++ b/src/pwmc.c @@ -197,6 +197,9 @@ static gpg_error_t process_cmd(pwm_t *pwm, char **result, int input) if (rc) return rc; + if (!nfds) + return 0; + for (i = 0, n = 0; i < nfds; i++) { FD_SET(pfds[i].fd, &rfds); n = pfds[i].fd > n ? pfds[i].fd : n; -- 2.11.4.GIT