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

"Nikos Mavrogiannopoulos" <[email protected]>
Newsgroups gmane.comp.encryption.gpg.gnutls.cvs
Message-ID <[email protected]>
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 <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.