gpg: Fix buglet in the check_all_keysigs function.
authorWerner Koch <wk@gnupg.org>
Mon, 9 May 2016 19:07:40 +0000 (21:07 +0200)
committerWerner Koch <wk@gnupg.org>
Mon, 9 May 2016 19:16:23 +0000 (21:16 +0200)
* g10/keyedit.c (sig_comparison): Actually compare the pubkey
algorithms.
--

This fixes two bugs: The first was a typo which led to us comparing A
with A.  The second problem was the use of an assert at a place where
this can't be asserted: Two signature may have different algorithms;
they won't verify but after all it is about corrupted signatures.

Reported-by: Guilhem Moulin <guilhem@fripost.org>
GnuPG-bug-id: 2236
Signed-off-by: Werner Koch <wk@gnupg.org>
g10/keyedit.c

index 7ddf342..200a1ab 100644 (file)
@@ -350,8 +350,9 @@ sig_comparison (const void *av, const void *bv)
     return 1;
 
   ndataa = pubkey_get_nsig (a->pubkey_algo);
-  ndatab = pubkey_get_nsig (a->pubkey_algo);
-  log_assert (ndataa == ndatab);
+  ndatab = pubkey_get_nsig (b->pubkey_algo);
+  if (ndataa != ndatab)
+    return (ndataa < ndatab)? -1 : 1;
 
   for (i = 0; i < ndataa; i ++)
     {