gpg: Fix wrong Tofu DB consistency check.
authorWerner Koch <wk@gnupg.org>
Wed, 18 Oct 2017 11:55:56 +0000 (13:55 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 18 Oct 2017 11:56:12 +0000 (13:56 +0200)
* g10/tofu.c (build_conflict_set): Do not assume MAX_FINGERPRINT_LEN
is the size of the fingerprint.
--

This problem was exhibited by
commit ecbbafb88d920e713439b6b1b8e1b41a6f8d0e38.

Signed-off-by: Werner Koch <wk@gnupg.org>
g10/tofu.c

index ddd7f8c..e63e989 100644 (file)
@@ -2083,13 +2083,16 @@ build_conflict_set (ctrl_t ctrl, tofu_dbs_t dbs,
    * policy to ask due to a conflict.  */
   for (iter = conflict_set; iter; iter = iter->next)
     {
+      /* Fixme: Why the check against N+1?  */
       int l = strlen (iter->d);
-      if (!(l == 2 * MAX_FINGERPRINT_LEN
-            || l == 2 * MAX_FINGERPRINT_LEN + 1))
+      if (!(l == 2 * 20
+            || l == 2 * 20 + 1
+            || l == 2 * 32
+            || l == 2 * 32 + 1))
         {
           log_error (_("TOFU db corruption detected.\n"));
-          print_further_info ("fingerprint '%s' is not %d characters long",
-                              iter->d, 2 * MAX_FINGERPRINT_LEN);
+          print_further_info ("fingerprint '%s' is %d characters long",
+                              iter->d, l);
         }
 
       if (l >= 1 && iter->d[l - 1] == '!')