]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
check PIN size.
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 6 Apr 2011 22:18:01 +0000 (00:18 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Wed, 6 Apr 2011 22:22:10 +0000 (00:22 +0200)
src/common.c
src/pkcs11.c

index 7971c7b5357290bae61bf127ee9625b8f1f5bd91..286b9564c4e5f3bd08aff1f74d5945eb4cb9ab59 100644 (file)
@@ -748,6 +748,12 @@ pin_callback (void *user, int attempt, const char *token_url,
     {
       if (strcmp (cached_url, token_url) == 0)
         {
+          if (strlen(pin) >= sizeof(cached_pin))
+            {
+              fprintf (stderr, "Too long PIN given\n");
+              exit (1);
+            }
+
           strcpy (pin, cached_pin);
           return 0;
         }
index 62446374d19c5e71996a827354f7db293c89e631..cab837a99433606fde863774ef0fddb5b355bcef 100644 (file)
@@ -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)