gnutls-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] GNU gnutls branch, master, updated. gnutls_3_0_18-32-g95fdfbf


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU gnutls branch, master, updated. gnutls_3_0_18-32-g95fdfbf
Date: Mon, 16 Apr 2012 16:42:45 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU gnutls".

http://git.savannah.gnu.org/cgit/gnutls.git/commit/?id=95fdfbf84ac16f982d7ff9405de2acc436644829

The branch, master has been updated
       via  95fdfbf84ac16f982d7ff9405de2acc436644829 (commit)
      from  c1eddcfe663b9e3cb9a411f855e00f49811ff205 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 95fdfbf84ac16f982d7ff9405de2acc436644829
Author: Nikos Mavrogiannopoulos <address@hidden>
Date:   Mon Apr 16 18:41:00 2012 +0200

    If a callback fails try the other.

-----------------------------------------------------------------------

Summary of changes:
 NEWS         |    3 ++-
 lib/pkcs11.c |   19 +++++++++++--------
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/NEWS b/NEWS
index c105b32..41e3065 100644
--- a/NEWS
+++ b/NEWS
@@ -5,7 +5,8 @@ See the end for copying conditions.
 * Version 3.1.0 (unreleased)
 
 ** libgnutls: When decoding a PKCS #11 URL the pin-source field
-is assumed to be a file that stores the pin.
+is assumed to be a file that stores the pin. Based on patch
+by David Smith.
 
 ** API and ABI modifications:
 No changes since last version.
diff --git a/lib/pkcs11.c b/lib/pkcs11.c
index ca7b76b..6cc40f3 100644
--- a/lib/pkcs11.c
+++ b/lib/pkcs11.c
@@ -1948,7 +1948,7 @@ retrieve_pin_for_callback (struct ck_token_info 
*token_info, int attempts,
   *pin = p11_kit_pin_new_for_string (pin_value);
   
   if (*pin == NULL)
-    return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
+    return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
 
   return 0;
 }
@@ -1958,29 +1958,32 @@ retrieve_pin (struct p11_kit_uri *info, struct 
ck_token_info *token_info,
               int attempts, ck_user_type_t user_type, struct p11_kit_pin **pin)
 {
   const char *pinfile;
+  int ret = GNUTLS_E_PKCS11_PIN_ERROR;
 
   *pin = NULL;
 
   /* Check if a pinfile is specified, and use that if possible */
   pinfile = p11_kit_uri_get_pinfile (info);
-  if (pinfile != NULL && attempts == 0)
+  if (pinfile != NULL)
     {
       _gnutls_debug_log("pk11: Using pinfile to retrieve PIN\n");
-      return retrieve_pin_for_pinfile (pinfile, token_info, attempts, 
user_type, pin);
+      ret = retrieve_pin_for_pinfile (pinfile, token_info, attempts, 
user_type, pin);
     }
 
   /* The global gnutls pin callback */
-  else if (pin_func)
-    return retrieve_pin_for_callback (token_info, attempts, user_type, pin);
+  if (pin_func && ret < 0)
+    ret = retrieve_pin_for_callback (token_info, attempts, user_type, pin);
 
   /* Otherwise, PIN entry is necessary for login, so fail if there's
    * no callback. */
-  else
+  
+  if (ret < 0)
     {
       gnutls_assert ();
-      _gnutls_debug_log ("pk11: No pin callback but login required.\n");
-      return GNUTLS_E_PKCS11_ERROR;
+      _gnutls_debug_log ("pk11: No suitable pin callback but login 
required.\n");
     }
+    
+  return ret;
 }
 
 int


hooks/post-receive
-- 
GNU gnutls



reply via email to

[Prev in Thread] Current Thread [Next in Thread]