[git] GnuPG - branch, master, updated. post-nuke-of-trailing-ws-48-g5da1267

by Werner Koch cvs at cvs.gnupg.org
Tue Apr 26 00:28:46 CEST 2011


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 "The GNU Privacy Guard".

The branch, master has been updated
       via  5da12674eaae11969b22e6f80e4957217ad406d6 (commit)
      from  4caa768f1d3388f36a6de4be9f71d916696b9e2d (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 5da12674eaae11969b22e6f80e4957217ad406d6
Author: Werner Koch <wk at gnupg.org>
Date:   Mon Apr 25 23:56:47 2011 +0200

    Fix regression in gpg's mail address parsing.
    
    Since 2009-12-08 gpg was not able to find email addresses indicated
    by a leading '<'.  This happened when I merged the user id
    classification code of gpgsm and gpg.

diff --git a/common/ChangeLog b/common/ChangeLog
index ba7794e..a68246e 100644
--- a/common/ChangeLog
+++ b/common/ChangeLog
@@ -1,3 +1,8 @@
+2011-04-25  Werner Koch  <wk at g10code.com>
+
+	* userids.c (classify_user_id): Add arg OPENPGP_HACK to fix
+	regression from 2009-12-08.
+
 2011-04-01  Werner Koch  <wk at g10code.com>
 
 	* sysutils.c (get_uint_nonce): New.
diff --git a/common/userids.c b/common/userids.c
index 9cc29f3..8c89c32 100644
--- a/common/userids.c
+++ b/common/userids.c
@@ -61,7 +61,7 @@
  */
 
 gpg_error_t
-classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc)
+classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc, int openpgp_hack)
 {
   const char *s;
   int hexprefix = 0;
@@ -95,7 +95,12 @@ classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc)
 
     case '<': /* An email address.  */
       mode = KEYDB_SEARCH_MODE_MAIL;
-      s++;
+      /* FIXME: The keyring code in g10 assumes that the mail name is
+         prefixed with an '<'.  However the keybox code used for sm/
+         assumes it has been removed.  For now we use this simple hack
+         to overcome the problem.  */
+      if (!openpgp_hack)
+        s++;
       desc->u.name = s;
       break;
 
diff --git a/common/userids.h b/common/userids.h
index 246b107..9b3a2c3 100644
--- a/common/userids.h
+++ b/common/userids.h
@@ -22,7 +22,8 @@
 
 #include "../kbx/keybox-search-desc.h"
 
-gpg_error_t classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc);
+gpg_error_t classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc,
+                              int openpgp_hack);
 
 
 #endif /*GNUPG_COMMON_USERIDS_H*/
diff --git a/dirmngr/ChangeLog b/dirmngr/ChangeLog
index f7ac887..e024bab 100644
--- a/dirmngr/ChangeLog
+++ b/dirmngr/ChangeLog
@@ -1,3 +1,9 @@
+2011-04-25  Werner Koch  <wk at g10code.com>
+
+	* ks-engine-hkp.c (ks_hkp_search): Mark classify_user_id for use
+	with OpenPGP.
+	(ks_hkp_get): Ditto.
+
 2011-04-12  Werner Koch  <wk at g10code.com>
 
 	* ks-engine-hkp.c (ks_hkp_search, ks_hkp_get, ks_hkp_put): Factor
diff --git a/dirmngr/ks-engine-hkp.c b/dirmngr/ks-engine-hkp.c
index 0dd9a64..d4a1211 100644
--- a/dirmngr/ks-engine-hkp.c
+++ b/dirmngr/ks-engine-hkp.c
@@ -654,7 +654,7 @@ ks_hkp_search (ctrl_t ctrl, parsed_uri_t uri, const char *pattern,
      Note that HKP keyservers like the 0x to be present when searching
      by keyid.  We need to re-format the fingerprint and keyids so to
      remove the gpg specific force-use-of-this-key flag ("!").  */
-  err = classify_user_id (pattern, &desc);
+  err = classify_user_id (pattern, &desc, 1);
   if (err)
     return err;
   switch (desc.mode)
@@ -772,7 +772,7 @@ ks_hkp_get (ctrl_t ctrl, parsed_uri_t uri, const char *keyspec, estream_t *r_fp)
      Note that HKP keyservers like the 0x to be present when searching
      by keyid.  We need to re-format the fingerprint and keyids so to
      remove the gpg specific force-use-of-this-key flag ("!").  */
-  err = classify_user_id (keyspec, &desc);
+  err = classify_user_id (keyspec, &desc, 1);
   if (err)
     return err;
   switch (desc.mode)
diff --git a/g10/ChangeLog b/g10/ChangeLog
index a1c608f..8b22df8 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,13 @@
+2011-04-25  Werner Koch  <wk at g10code.com>
+
+	* delkey.c (do_delete_key): Mark classify_user_id for use with
+	OpenPGP.
+	* trustdb.c (register_trusted_key): Ditto.
+	* revoke.c (gen_revoke): Ditto.
+	* keyserver.c (keyserver_export, keyidlist, keyserver_export): Ditto.
+	* getkey.c (key_byname): Ditto.
+	* export.c (do_export_stream): Ditto.
+
 2011-04-20  Marcus Brinkmann  <mb at g10code.com>
 
 	* keylist.c (list_keyblock_colon): Use get_ownertrust_info, not
diff --git a/g10/delkey.c b/g10/delkey.c
index 9785498..3b47c40 100644
--- a/g10/delkey.c
+++ b/g10/delkey.c
@@ -63,7 +63,7 @@ do_delete_key( const char *username, int secret, int force, int *r_sec_avail )
     *r_sec_avail = 0;
 
     /* Search the userid */
-    rc = classify_user_id (username, &desc);
+    rc = classify_user_id (username, &desc, 1);
     exactmatch = (desc.mode == KEYDB_SEARCH_MODE_FPR
                   || desc.mode == KEYDB_SEARCH_MODE_FPR16
                   || desc.mode == KEYDB_SEARCH_MODE_FPR20);
diff --git a/g10/export.c b/g10/export.c
index 191f68b..9f4959e 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -752,7 +752,7 @@ do_export_stream (ctrl_t ctrl, iobuf_t out, strlist_t users, int secret,
 
       for (ndesc=0, sl=users; sl; sl = sl->next)
         {
-          if (!(err=classify_user_id (sl->d, desc+ndesc)))
+          if (!(err=classify_user_id (sl->d, desc+ndesc, 1)))
             ndesc++;
           else
             log_error (_("key \"%s\" not found: %s\n"),
diff --git a/g10/getkey.c b/g10/getkey.c
index 6464f9e..171f177 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -617,7 +617,7 @@ key_byname (GETKEY_CTX *retctx, strlist_t namelist,
 	{
 	  gpg_error_t err;
 
-	  err = classify_user_id (r->d, &ctx->items[n]);
+	  err = classify_user_id (r->d, &ctx->items[n], 1);
 
 	  if (ctx->items[n].exact)
 	    ctx->exact = 1;
diff --git a/g10/keyserver.c b/g10/keyserver.c
index 31c7133..5cc7438 100644
--- a/g10/keyserver.c
+++ b/g10/keyserver.c
@@ -626,7 +626,7 @@ parse_keyrec(char *keystring)
       if((tok=strsep(&keystring,":"))==NULL)
 	return ret;
 
-      err = classify_user_id (tok, &work->desc);
+      err = classify_user_id (tok, &work->desc, 1);
       if (err || (work->desc.mode    != KEYDB_SEARCH_MODE_SHORT_KID
                   && work->desc.mode != KEYDB_SEARCH_MODE_LONG_KID
                   && work->desc.mode != KEYDB_SEARCH_MODE_FPR16
@@ -996,7 +996,7 @@ keyserver_export (ctrl_t ctrl, strlist_t users)
   /* Weed out descriptors that we don't support sending */
   for(;users;users=users->next)
     {
-      err = classify_user_id (users->d, &desc);
+      err = classify_user_id (users->d, &desc, 1);
       if (err || (desc.mode    != KEYDB_SEARCH_MODE_SHORT_KID
                   && desc.mode != KEYDB_SEARCH_MODE_LONG_KID
                   && desc.mode != KEYDB_SEARCH_MODE_FPR16
@@ -1031,7 +1031,7 @@ keyserver_import (ctrl_t ctrl, strlist_t users)
 
   for(;users;users=users->next)
     {
-      err = classify_user_id (users->d, &desc[count]);
+      err = classify_user_id (users->d, &desc[count], 1);
       if (err || (desc[count].mode    != KEYDB_SEARCH_MODE_SHORT_KID
                   && desc[count].mode != KEYDB_SEARCH_MODE_LONG_KID
                   && desc[count].mode != KEYDB_SEARCH_MODE_FPR16
@@ -1125,7 +1125,7 @@ keyidlist(strlist_t users,KEYDB_SEARCH_DESC **klist,int *count,int fakev3)
       for (ndesc=0, sl=users; sl; sl = sl->next)
 	{
           gpg_error_t err;
-	  if (!(err = classify_user_id (sl->d, desc+ndesc)))
+	  if (!(err = classify_user_id (sl->d, desc+ndesc, 1)))
 	    ndesc++;
 	  else
 	    log_error (_("key \"%s\" not found: %s\n"),
diff --git a/g10/revoke.c b/g10/revoke.c
index 3beeacf..c18dfb9 100644
--- a/g10/revoke.c
+++ b/g10/revoke.c
@@ -220,7 +220,7 @@ gen_desig_revoke( const char *uname, strlist_t locusr )
     afx = new_armor_context ();
 
     kdbhd = keydb_new ();
-    rc = classify_user_id (uname, &desc);
+    rc = classify_user_id (uname, &desc, 1);
     if (!rc)
       rc = keydb_search (kdbhd, &desc, 1);
     if (rc) {
@@ -463,7 +463,7 @@ gen_revoke (const char *uname)
 
   /* Search the userid; we don't want the whole getkey stuff here.  */
   kdbhd = keydb_new ();
-  rc = classify_user_id (uname, &desc);
+  rc = classify_user_id (uname, &desc, 1);
   if (!rc)
     rc = keydb_search (kdbhd, &desc, 1);
   if (rc)
diff --git a/g10/trustdb.c b/g10/trustdb.c
index c896432..c6ff692 100644
--- a/g10/trustdb.c
+++ b/g10/trustdb.c
@@ -217,7 +217,7 @@ register_trusted_key( const char *string )
   gpg_error_t err;
   KEYDB_SEARCH_DESC desc;
 
-  err = classify_user_id (string, &desc);
+  err = classify_user_id (string, &desc, 1);
   if (err || desc.mode != KEYDB_SEARCH_MODE_LONG_KID )
     {
       log_error(_("`%s' is not a valid long keyID\n"), string );
diff --git a/sm/ChangeLog b/sm/ChangeLog
index 30e71ba..7127fb5 100644
--- a/sm/ChangeLog
+++ b/sm/ChangeLog
@@ -1,3 +1,14 @@
+2011-04-25  Werner Koch  <wk at g10code.com>
+
+	* certlist.c (gpgsm_add_to_certlist): Mark classify_user_id for
+	use with non-OpenPGP.
+	(gpgsm_find_cert): Ditto.
+	* sign.c (get_default_signer): Ditto.
+	* keylist.c (list_internal_keys): Ditto.
+	* import.c (reimport_one): Ditto.
+	* export.c (gpgsm_export): Ditto.
+	* delete.c (delete_one): Ditto.
+
 2011-03-10  Werner Koch  <wk at g10code.com>
 
 	* minip12.c (oid_pkcs5PBKDF2, oid_pkcs5PBES2, oid_aes128_CBC): New.
diff --git a/sm/certlist.c b/sm/certlist.c
index 299d075..0e90319 100644
--- a/sm/certlist.c
+++ b/sm/certlist.c
@@ -301,7 +301,7 @@ gpgsm_add_to_certlist (ctrl_t ctrl, const char *name, int secret,
   KEYDB_HANDLE kh = NULL;
   ksba_cert_t cert = NULL;
 
-  rc = classify_user_id (name, &desc);
+  rc = classify_user_id (name, &desc, 0);
   if (!rc)
     {
       kh = keydb_new (0);
@@ -480,7 +480,7 @@ gpgsm_find_cert (const char *name, ksba_sexp_t keyid, ksba_cert_t *r_cert)
   KEYDB_HANDLE kh = NULL;
 
   *r_cert = NULL;
-  rc = classify_user_id (name, &desc);
+  rc = classify_user_id (name, &desc, 0);
   if (!rc)
     {
       kh = keydb_new (0);
diff --git a/sm/delete.c b/sm/delete.c
index 10ec965..97fadfa 100644
--- a/sm/delete.c
+++ b/sm/delete.c
@@ -45,7 +45,7 @@ delete_one (ctrl_t ctrl, const char *username)
   int duplicates = 0;
   int is_ephem = 0;
 
-  rc = classify_user_id (username, &desc);
+  rc = classify_user_id (username, &desc, 0);
   if (rc)
     {
       log_error (_("certificate `%s' not found: %s\n"),
diff --git a/sm/export.c b/sm/export.c
index 7884adf..2e4fed9 100644
--- a/sm/export.c
+++ b/sm/export.c
@@ -178,7 +178,7 @@ gpgsm_export (ctrl_t ctrl, strlist_t names, estream_t stream)
     {
       for (ndesc=0, sl=names; sl; sl = sl->next)
         {
-          rc = classify_user_id (sl->d, desc+ndesc);
+          rc = classify_user_id (sl->d, desc+ndesc, 0);
           if (rc)
             {
               log_error ("key `%s' not found: %s\n",
@@ -348,7 +348,7 @@ gpgsm_p12_export (ctrl_t ctrl, const char *name, estream_t stream)
       goto leave;
     }
 
-  err = classify_user_id (name, desc);
+  err = classify_user_id (name, desc, 0);
   if (err)
     {
       log_error ("key `%s' not found: %s\n",
diff --git a/sm/import.c b/sm/import.c
index 7b58524..3635525 100644
--- a/sm/import.c
+++ b/sm/import.c
@@ -433,7 +433,7 @@ reimport_one (ctrl_t ctrl, struct stats_s *stats, int in_fd)
 
       stats->count++;
 
-      err = classify_user_id (line, &desc);
+      err = classify_user_id (line, &desc, 0);
       if (err)
         {
           print_import_problem (ctrl, NULL, 0);
diff --git a/sm/keydb.c b/sm/keydb.c
index 35343f3..d3b911e 100644
--- a/sm/keydb.c
+++ b/sm/keydb.c
@@ -1205,7 +1205,7 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, strlist_t names)
     {
       for (ndesc=0, sl=names; sl; sl = sl->next)
         {
-          rc = classify_user_id (sl->d, desc+ndesc);
+          rc = classify_user_id (sl->d, desc+ndesc, 0);
           if (rc)
             {
               log_error ("key `%s' not found: %s\n",
diff --git a/sm/keylist.c b/sm/keylist.c
index fc903ba..e67c2d8 100644
--- a/sm/keylist.c
+++ b/sm/keylist.c
@@ -1345,7 +1345,7 @@ list_internal_keys (ctrl_t ctrl, strlist_t names, estream_t fp,
     {
       for (ndesc=0, sl=names; sl; sl = sl->next)
         {
-          rc = classify_user_id (sl->d, desc+ndesc);
+          rc = classify_user_id (sl->d, desc+ndesc, 0);
           if (rc)
             {
               log_error ("key `%s' not found: %s\n",
diff --git a/sm/sign.c b/sm/sign.c
index 0f83db6..a3005ca 100644
--- a/sm/sign.c
+++ b/sm/sign.c
@@ -211,7 +211,7 @@ get_default_signer (ctrl_t ctrl)
       return cert;
     }
 
-  rc = classify_user_id (opt.local_user, &desc);
+  rc = classify_user_id (opt.local_user, &desc, 0);
   if (rc)
     {
       log_error ("failed to find default signer: %s\n", gpg_strerror (rc));

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

Summary of changes:
 common/ChangeLog        |    5 +++++
 common/userids.c        |    9 +++++++--
 common/userids.h        |    3 ++-
 dirmngr/ChangeLog       |    6 ++++++
 dirmngr/ks-engine-hkp.c |    4 ++--
 g10/ChangeLog           |   10 ++++++++++
 g10/delkey.c            |    2 +-
 g10/export.c            |    2 +-
 g10/getkey.c            |    2 +-
 g10/keyserver.c         |    8 ++++----
 g10/revoke.c            |    4 ++--
 g10/trustdb.c           |    2 +-
 sm/ChangeLog            |   11 +++++++++++
 sm/certlist.c           |    4 ++--
 sm/delete.c             |    2 +-
 sm/export.c             |    4 ++--
 sm/import.c             |    2 +-
 sm/keydb.c              |    2 +-
 sm/keylist.c            |    2 +-
 sm/sign.c               |    2 +-
 20 files changed, 62 insertions(+), 24 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list