aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/keydb.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/g10/keydb.c b/g10/keydb.c
index 0475f8561..670a8a191 100644
--- a/g10/keydb.c
+++ b/g10/keydb.c
@@ -1249,12 +1249,19 @@ parse_keyblock_image (iobuf_t iobuf, int pk_no, int uid_no,
}
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;
}