aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal H. Walfield <[email protected]>2015-08-24 14:14:09 +0000
committerNeal H. Walfield <[email protected]>2015-08-24 14:14:38 +0000
commit348a6ebb63523305ce9f47d0f3e8a9086c338fed (patch)
tree62cbe9ac5cbe9105299f2d31d01fc2778104a13b
parentsm: Support secret key export via the Assuan interface. (diff)
downloadgnupg-348a6ebb63523305ce9f47d0f3e8a9086c338fed.tar.gz
gnupg-348a6ebb63523305ce9f47d0f3e8a9086c338fed.zip
agent: Raise the maximum password length. Don't hard code it.
* agent/agent.h (MAX_PASSPHRASE_LEN): Define. * agent/command-ssh.c (ssh_identity_register): Use it instead of a hard-coded literal. * agent/cvt-openpgp.c (convert_from_openpgp_main): Likewise. * agent/findkey.c (unprotect): Likewise. * agent/genkey.c (agent_ask_new_passphrase): Likewise. -- Signed-off-by: Neal H. Walfield <[email protected]>. GnuPG-bug-id: 2038
-rw-r--r--agent/agent.h5
-rw-r--r--agent/command-ssh.c8
-rw-r--r--agent/cvt-openpgp.c4
-rw-r--r--agent/findkey.c4
-rw-r--r--agent/genkey.c8
5 files changed, 17 insertions, 12 deletions
diff --git a/agent/agent.h b/agent/agent.h
index 958e3be6c..a1b37943c 100644
--- a/agent/agent.h
+++ b/agent/agent.h
@@ -47,6 +47,11 @@
/* Maximum length of a digest. */
#define MAX_DIGEST_LEN 64
+/* The maximum length of a passphrase (in bytes). Note: this is
+ further contrained by the Assuan line length (and any other text on
+ the same line). However, the Assuan line length is 1k bytes so
+ this shouldn't be a problem in practice. */
+#define MAX_PASSPHRASE_LEN 255
/* A large struct name "opt" to keep global flags */
diff --git a/agent/command-ssh.c b/agent/command-ssh.c
index 2a3037cd4..3d29f9744 100644
--- a/agent/command-ssh.c
+++ b/agent/command-ssh.c
@@ -3094,17 +3094,17 @@ ssh_identity_register (ctrl_t ctrl, ssh_key_type_spec_t *spec,
goto out;
}
- pi = gcry_calloc_secure (2, sizeof (*pi) + 100 + 1);
+ pi = gcry_calloc_secure (2, sizeof (*pi) + MAX_PASSPHRASE_LEN + 1);
if (!pi)
{
err = gpg_error_from_syserror ();
goto out;
}
- pi2 = pi + (sizeof *pi + 100 + 1);
- pi->max_length = 100;
+ pi2 = pi + (sizeof *pi + MAX_PASSPHRASE_LEN + 1);
+ pi->max_length = MAX_PASSPHRASE_LEN + 1;
pi->max_tries = 1;
pi->with_repeat = 1;
- pi2->max_length = 100;
+ pi2->max_length = MAX_PASSPHRASE_LEN + 1;
pi2->max_tries = 1;
pi2->check_cb = reenter_compare_cb;
pi2->check_cb_arg = pi->pin;
diff --git a/agent/cvt-openpgp.c b/agent/cvt-openpgp.c
index 8bf587342..6d2221015 100644
--- a/agent/cvt-openpgp.c
+++ b/agent/cvt-openpgp.c
@@ -918,10 +918,10 @@ convert_from_openpgp_main (ctrl_t ctrl, gcry_sexp_t s_pgp,
struct pin_entry_info_s *pi;
struct try_do_unprotect_arg_s pi_arg;
- pi = xtrycalloc_secure (1, sizeof (*pi) + 100);
+ pi = xtrycalloc_secure (1, sizeof (*pi) + MAX_PASSPHRASE_LEN + 1);
if (!pi)
return gpg_error_from_syserror ();
- pi->max_length = 100;
+ pi->max_length = MAX_PASSPHRASE_LEN + 1;
pi->min_digits = 0; /* We want a real passphrase. */
pi->max_digits = 16;
pi->max_tries = 3;
diff --git a/agent/findkey.c b/agent/findkey.c
index e7cd79e6c..c49c37a55 100644
--- a/agent/findkey.c
+++ b/agent/findkey.c
@@ -450,10 +450,10 @@ unprotect (ctrl_t ctrl, const char *cache_nonce, const char *desc_text,
}
}
- pi = gcry_calloc_secure (1, sizeof (*pi) + 100);
+ pi = gcry_calloc_secure (1, sizeof (*pi) + MAX_PASSPHRASE_LEN + 1);
if (!pi)
return gpg_error_from_syserror ();
- pi->max_length = 100;
+ pi->max_length = MAX_PASSPHRASE_LEN + 1;
pi->min_digits = 0; /* we want a real passphrase */
pi->max_digits = 16;
pi->max_tries = 3;
diff --git a/agent/genkey.c b/agent/genkey.c
index af53c60ad..13858cae3 100644
--- a/agent/genkey.c
+++ b/agent/genkey.c
@@ -374,13 +374,13 @@ agent_ask_new_passphrase (ctrl_t ctrl, const char *prompt,
return err;
}
- pi = gcry_calloc_secure (2, sizeof (*pi) + 100);
- pi2 = pi + (sizeof *pi + 100);
- pi->max_length = 100;
+ pi = gcry_calloc_secure (2, sizeof (*pi) + MAX_PASSPHRASE_LEN + 1);
+ pi2 = pi + (sizeof *pi + MAX_PASSPHRASE_LEN + 1);
+ pi->max_length = MAX_PASSPHRASE_LEN + 1;
pi->max_tries = 3;
pi->with_qualitybar = 1;
pi->with_repeat = 1;
- pi2->max_length = 100;
+ pi2->max_length = MAX_PASSPHRASE_LEN + 1;
pi2->max_tries = 3;
pi2->check_cb = reenter_compare_cb;
pi2->check_cb_arg = pi->pin;