From bba74cdd95ea98b5a7c3a12823b229341e91504e Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Sun, 16 Aug 2015 13:46:59 -0400 Subject: [PATCH] Fix pinentry loopback and passphrase contraints. * agent/command.c (cmd_get_passphrase): Don't repeat passphrase for pinentry loopback mode. * agent/genkey.c (check_passphrase_constraints): Immediately return when pinentry mode is loopback. -- Fixes endless loop when inquiring a passphrase with pinentry-mode=loopback that may not satisfy passphrase contraints. --- agent/command.c | 3 +++ agent/genkey.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/agent/command.c b/agent/command.c index 62a4628cd..f09a2ff32 100644 --- a/agent/command.c +++ b/agent/command.c @@ -1541,6 +1541,9 @@ cmd_get_passphrase (assuan_context_t ctx, char *line) { char *response2; + if (ctrl->pinentry_mode == PINENTRY_MODE_LOOPBACK) + break; + rc = agent_get_passphrase (ctrl, &response2, desc2, prompt, errtext, 0, cacheid, CACHE_MODE_USER); diff --git a/agent/genkey.c b/agent/genkey.c index df17880c9..af53c60ad 100644 --- a/agent/genkey.c +++ b/agent/genkey.c @@ -189,6 +189,9 @@ check_passphrase_constraints (ctrl_t ctrl, const char *pw, char *msg2 = NULL; char *msg3 = NULL; + if (ctrl && ctrl->pinentry_mode == PINENTRY_MODE_LOOPBACK) + return 0; + if (!pw) pw = "";