core: Adjust for TOFU_STATS change in gnupg 2.1.16.
authorWerner Koch <wk@gnupg.org>
Wed, 24 Aug 2016 18:10:36 +0000 (20:10 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 24 Aug 2016 18:10:54 +0000 (20:10 +0200)
* src/gpgme.h.in (_gpgme_tofu_info): Change 'firstseen' and 'lastseen'
to a timestamp value.
* src/verify.c (parse_tofu_stats): Do not cap these values at UINT_MAX.
--

Using an unsigned long here is okay: We will never get an error and
even on machines where unsigned long is 32 bit (e.g. Windows64) this
allows us to operate until 2106.  By then Windows will be a footnote
in history or Windows128 has changed that type to something larger
than 32 bit ;-)

Signed-off-by: Werner Koch <wk@gnupg.org>
src/gpgme.h.in
src/verify.c

index c07cac8..79a7b9f 100644 (file)
@@ -648,10 +648,10 @@ struct _gpgme_tofu_info
   /* Number of encryptions done with this binding.  Capped at USHRT_MAX.  */
   unsigned short encrcount;
 
-  /* Number of seconds since the first and the most recently seen
-   * message was verified.  */
-  unsigned int firstseen;
-  unsigned int lastseen;
+  /* Number of seconds since Epoch when the first and the most
+   * recently seen message were verified.  0 means unknown. */
+  unsigned long firstseen;
+  unsigned long lastseen;
 
   /* If non-NULL a human readable string summarizing the TOFU data. */
   char *description;
index e573b01..92eb333 100644 (file)
@@ -818,20 +818,16 @@ parse_tofu_stats (gpgme_signature_t sig, char *args)
   if (nfields == 4)
     return 0; /* No more optional fields.  */
 
-  /* Parse first and last seen (none or both are required).  */
+  /* Parse first and last seen timestamps (none or both are required).  */
   if (nfields < 6)
     return trace_gpg_error (GPG_ERR_INV_ENGINE); /* "tm2" missing.  */
   err = _gpgme_strtoul_field (field[4], &uval);
   if (err)
     return trace_gpg_error (GPG_ERR_INV_ENGINE);
-  if (uval > UINT_MAX)
-    uval = UINT_MAX;
   ti->firstseen = uval;
   err = _gpgme_strtoul_field (field[5], &uval);
   if (err)
     return trace_gpg_error (GPG_ERR_INV_ENGINE);
-  if (uval > UINT_MAX)
-    uval = UINT_MAX;
   ti->lastseen = uval;
 
   return 0;