gpg: Fix a potential loss of key sigs during import with self-sigs-only.
authorWerner Koch <wk@gnupg.org>
Thu, 7 Nov 2019 14:07:25 +0000 (15:07 +0100)
committerWerner Koch <wk@gnupg.org>
Thu, 7 Nov 2019 14:07:25 +0000 (15:07 +0100)
* g10/import.c (import_one_real): Don't do the final clean in the
merge case.
--

This fixes a regression introduced with self-sigs-only.

GnuPG-bug-id: 4628
Signed-off-by: Werner Koch <wk@gnupg.org>
doc/gpg.texi
g10/import.c

index 674c4c6..29ac8f4 100644 (file)
@@ -2389,12 +2389,14 @@ opposite meaning. The options are:
   information.
 
   @item self-sigs-only
-  Accept only self-signatures while importing a key.  All other
-  key signatures are skipped at an early import stage.  This option
-  can be used with @code{keyserver-options} to mitigate attempts to
-  flood a key with bogus signatures from a keyserver.  The drawback is
-  that all other valid key signatures, as required by the Web of Trust
-  are also not imported.
+  Accept only self-signatures while importing a key.  All other key
+  signatures are skipped at an early import stage.  This option can be
+  used with @code{keyserver-options} to mitigate attempts to flood a
+  key with bogus signatures from a keyserver.  The drawback is that
+  all other valid key signatures, as required by the Web of Trust are
+  also not imported.  Note that when using this option along with
+  import-clean it suppresses the final clean step after merging the
+  imported key into the existing key.
 
   @item repair-keys
   After import, fix various problems with the
index 47014b9..911d098 100644 (file)
@@ -2151,7 +2151,10 @@ import_one_real (ctrl_t ctrl,
       if (err)
         goto leave;
 
-      if ((options & IMPORT_CLEAN))
+      /* Clean the final keyblock again if requested.  we can't do
+       * this if only self-signatures are imported; see bug #4628.  */
+      if ((options & IMPORT_CLEAN)
+          && !(options & IMPORT_SELF_SIGS_ONLY))
         {
           merge_keys_and_selfsig (ctrl, keyblock_orig);
           clean_all_uids (ctrl, keyblock_orig, opt.verbose,