summaryrefslogtreecommitdiff
path: root/src/pkcs11.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2011-04-07 00:18:01 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2011-04-07 00:22:10 +0200
commitf623bca3f822eec97a638c1e6bb5626ec72f130e (patch)
tree1e152adb7c19ae25f539cd5169cbabc9e0aada36 /src/pkcs11.c
parent317ee3971bbcf96a320b05ed4611672350ad78c6 (diff)
downloadgnutls-f623bca3f822eec97a638c1e6bb5626ec72f130e.tar.gz
check PIN size.
Diffstat (limited to 'src/pkcs11.c')
-rw-r--r--src/pkcs11.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/pkcs11.c b/src/pkcs11.c
index 62446374d1..cab837a994 100644
--- a/src/pkcs11.c
+++ b/src/pkcs11.c
@@ -60,10 +60,10 @@ pin_callback (void *user, int attempt, const char *token_url,
}
}
- password = getpass ("Enter pin: ");
+ password = getpass ("Enter PIN: ");
if (password == NULL || password[0] == 0)
{
- fprintf (stderr, "No password given\n");
+ fprintf (stderr, "No PIN given\n");
exit (1);
}
@@ -72,6 +72,12 @@ pin_callback (void *user, int attempt, const char *token_url,
pin[len] = 0;
/* cache */
+ if (strlen(pin) >= sizeof(cached_pin))
+ {
+ fprintf (stderr, "Too long PIN given\n");
+ exit (1);
+ }
+
strcpy (cached_pin, pin);
free (cached_url);
cached_url = strdup (token_url);
@@ -609,13 +615,16 @@ pkcs11_init (FILE * outfile, const char *url, const char *label,
pin = getpass ("Enter Security Officer's PIN: ");
if (pin == NULL)
- exit (0);
+ exit (1);
+
+ if (strlen(pin) >= sizeof(so_pin))
+ exit (1);
strcpy (so_pin, pin);
pin = getpass ("Enter new User's PIN: ");
if (pin == NULL)
- exit (0);
+ exit (1);
ret = gnutls_pkcs11_token_init (url, so_pin, label);
if (ret < 0)