* g10/keydb.c (parse_keyblock_image): Treat invalid packet special.
--
This is in particular useful to run --list-keys on a keyring with
corrupted packets. The extra flush is to keep the diagnostic close to
the regular --list-key output.
Signed-off-by: Werner Koch <wk@gnupg.org>
This is a backport from master with support for the unsupported v5 key
handling.
(cherry picked from commit
30f44957ccd1433846709911798af3da4e437900)
Gbp-Pq: Topic from-2.2.16
Gbp-Pq: Name gpg-Do-not-bail-on-an-invalid-packet-in-the-local-keyring.patch
}
if (err)
{
- if (gpg_err_code (err) != GPG_ERR_UNKNOWN_VERSION)
+ es_fflush (es_stdout);
+ log_error ("parse_keyblock_image: read error: %s\n",
+ gpg_strerror (err));
+ if (gpg_err_code (err) == GPG_ERR_INV_PACKET)
{
- log_error ("parse_keyblock_image: read error: %s\n",
- gpg_strerror (err));
- err = gpg_error (GPG_ERR_INV_KEYRING);
+ free_packet (pkt, &parsectx);
+ init_packet (pkt);
+ continue;
}
+ /* Unknown version maybe due to v5 keys - we treat this
+ * error different. */
+ if (gpg_err_code (err) != GPG_ERR_UNKNOWN_VERSION)
+ err = gpg_error (GPG_ERR_INV_KEYRING);
break;
}