gnutls-commit
[Top][All Lists]
Advanced

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

[SCM] GNU gnutls branch, gnutls_2_12_x, updated. gnutls_2_12_18-4-g31cb7


From: Nikos Mavrogiannopoulos
Subject: [SCM] GNU gnutls branch, gnutls_2_12_x, updated. gnutls_2_12_18-4-g31cb70b
Date: Mon, 16 Apr 2012 16:43:16 +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=31cb70bdbc477c03fe217e5adaae89cd7cab6e18

The branch, gnutls_2_12_x has been updated
       via  31cb70bdbc477c03fe217e5adaae89cd7cab6e18 (commit)
      from  3693c0c474c85e363a3949aa8d70e9cee0de59bf (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 31cb70bdbc477c03fe217e5adaae89cd7cab6e18
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 37f2015..59ec92e 100644
--- a/NEWS
+++ b/NEWS
@@ -6,7 +6,8 @@ See the end for copying conditions.
 Version 2.12.19 (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.
 
 ** minitasn1: Upgraded to libtasn1 version 2.13 (pre-release).
 
diff --git a/lib/pkcs11.c b/lib/pkcs11.c
index 074186c..59cf686 100644
--- a/lib/pkcs11.c
+++ b/lib/pkcs11.c
@@ -1899,7 +1899,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;
 }
@@ -1909,29 +1909,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]