core: Adjust for TOFU_STATS change in gnupg 2.1.16.

* 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>
This commit is contained in:
Werner Koch 2016-08-24 20:10:36 +02:00
parent 1eefc2d43c
commit 38798fee5b
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
2 changed files with 5 additions and 9 deletions

View 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;

View 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;