time_t isn't the same size as gpgme_subkey_t->timestamp on OpenBSD.
Passing &subkey->timestamp to localtime was therefore passing an address
to the wrong size int and was causing a segfault.
Thanks to Hannes Wenzel for reporting the bug and providing a patch.
char date[STRING];
int more;
int rc = -1;
+ time_t tt;
if ((err = gpgme_new (&tmpctx)) != GPG_ERR_NO_ERROR)
{
len = mutt_strlen (subkey->keyid);
if (len > 8)
shortid += len - 8;
- strftime (date, sizeof (date), "%Y-%m-%d", localtime (&subkey->timestamp));
+ tt = subkey->timestamp;
+ strftime (date, sizeof (date), "%Y-%m-%d", localtime (&tt));
if (!more)
fprintf (*fp, "%s %5.5s %d/%8s %s %s\n", more ? "sub" : "pub",