agent: Use MAX_PASSPHRASE_LEN (255) also for the loopback.
authorWerner Koch <wk@gnupg.org>
Wed, 5 Jul 2017 09:54:45 +0000 (11:54 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 5 Jul 2017 09:54:45 +0000 (11:54 +0200)
* agent/call-pinentry.c (agent_get_passphrase): Reduce maximum
passphrase length as conveyed to the loopback to MAX_PASSPHRASE_LEN.
* agent/genkey.c (agent_ask_new_passphrase): Extend the maximum
passphrase as conveyed to the loopback to MAX_PASSPHRASE_LEN.
--

Note that in genkey() max_length is set to MAX_PASSPHRASE_LEN + 1
because in agent_askpin() decrements that value before conveying it to
the loopback.

GnuPG-bug-id: 3254
Signed-off-by: Werner Koch <wk@gnupg.org>
agent/call-pinentry.c
agent/genkey.c

index 9d8e7f6..cb7997f 100644 (file)
@@ -964,8 +964,8 @@ agent_askpin (ctrl_t ctrl,
          size_t size;
 
          *pininfo->pin = 0; /* Reset the PIN. */
-         rc = pinentry_loopback(ctrl, "PASSPHRASE", &passphrase, &size,
-                 pininfo->max_length - 1);
+         rc = pinentry_loopback (ctrl, "PASSPHRASE", &passphrase, &size,
+                                  pininfo->max_length - 1);
          if (rc)
            return rc;
 
@@ -1192,10 +1192,10 @@ agent_get_passphrase (ctrl_t ctrl,
       if (ctrl->pinentry_mode == PINENTRY_MODE_LOOPBACK)
         {
          size_t size;
-         size_t len = ASSUAN_LINELENGTH/2;
 
          return pinentry_loopback (ctrl, "PASSPHRASE",
-                                   (unsigned char **)retpass, &size, len);
+                                   (unsigned char **)retpass, &size,
+                                    MAX_PASSPHRASE_LEN);
         }
       return gpg_error (GPG_ERR_NO_PIN_ENTRY);
     }
index 31742a1..a3e37ee 100644 (file)
@@ -357,10 +357,10 @@ agent_ask_new_passphrase (ctrl_t ctrl, const char *prompt,
   if (ctrl->pinentry_mode == PINENTRY_MODE_LOOPBACK)
     {
        size_t size;
-       size_t len = 100;
        unsigned char *buffer;
 
-       err = pinentry_loopback(ctrl, "NEW_PASSPHRASE", &buffer, &size, len);
+       err = pinentry_loopback (ctrl, "NEW_PASSPHRASE", &buffer, &size,
+                                 MAX_PASSPHRASE_LEN);
        if (!err)
          {
            if (size)