aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/import.c6
-rw-r--r--g10/keydb.c13
-rw-r--r--g10/keylist.c2
-rw-r--r--g10/keyring.c2
-rw-r--r--g10/parse-packet.c2
5 files changed, 18 insertions, 7 deletions
diff --git a/g10/import.c b/g10/import.c
index b8148d48d..eb3063dd3 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -860,12 +860,14 @@ read_block( IOBUF a, int with_meta,
skip_sigs = 0;
while ((rc=parse_packet (&parsectx, pkt)) != -1)
{
- if (rc && (gpg_err_code (rc) == GPG_ERR_LEGACY_KEY
+ if (rc && ((gpg_err_code (rc) == GPG_ERR_LEGACY_KEY
+ || gpg_err_code (rc) == GPG_ERR_UNKNOWN_VERSION)
&& (pkt->pkttype == PKT_PUBLIC_KEY
|| pkt->pkttype == PKT_SECRET_KEY)))
{
in_v3key = 1;
- ++*r_v3keys;
+ if (gpg_err_code (rc) != GPG_ERR_UNKNOWN_VERSION)
+ ++*r_v3keys;
free_packet (pkt, &parsectx);
init_packet (pkt);
continue;
diff --git a/g10/keydb.c b/g10/keydb.c
index 03fadfd54..0475f8561 100644
--- a/g10/keydb.c
+++ b/g10/keydb.c
@@ -1249,9 +1249,12 @@ parse_keyblock_image (iobuf_t iobuf, int pk_no, int uid_no,
}
if (err)
{
- log_error ("parse_keyblock_image: read error: %s\n",
- gpg_strerror (err));
- err = gpg_error (GPG_ERR_INV_KEYRING);
+ if (gpg_err_code (err) != GPG_ERR_UNKNOWN_VERSION)
+ {
+ log_error ("parse_keyblock_image: read error: %s\n",
+ gpg_strerror (err));
+ err = gpg_error (GPG_ERR_INV_KEYRING);
+ }
break;
}
@@ -1955,7 +1958,9 @@ keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc,
rc = keybox_search (hd->active[hd->current].u.kb, desc,
ndesc, KEYBOX_BLOBTYPE_PGP,
descindex, &hd->skipped_long_blobs);
- while (rc == GPG_ERR_LEGACY_KEY);
+ while (gpg_err_code (rc) == GPG_ERR_LEGACY_KEY
+ || gpg_err_code (rc) == GPG_ERR_UNKNOWN_VERSION)
+ ;
break;
}
diff --git a/g10/keylist.c b/g10/keylist.c
index 7b3fde188..85fcdbaff 100644
--- a/g10/keylist.c
+++ b/g10/keylist.c
@@ -527,6 +527,8 @@ list_all (ctrl_t ctrl, int secret, int mark_secret)
{
if (gpg_err_code (rc) == GPG_ERR_LEGACY_KEY)
continue; /* Skip legacy keys. */
+ if (gpg_err_code (rc) == GPG_ERR_UNKNOWN_VERSION)
+ continue; /* Skip keys with unknown versions. */
log_error ("keydb_get_keyblock failed: %s\n", gpg_strerror (rc));
goto leave;
}
diff --git a/g10/keyring.c b/g10/keyring.c
index 25ef50747..a8dd46265 100644
--- a/g10/keyring.c
+++ b/g10/keyring.c
@@ -1476,6 +1476,8 @@ keyring_rebuild_cache (ctrl_t ctrl, void *token, int noisy)
{
if (gpg_err_code (rc) == GPG_ERR_LEGACY_KEY)
continue; /* Skip legacy keys. */
+ if (gpg_err_code (rc) == GPG_ERR_UNKNOWN_VERSION)
+ continue; /* Skip keys with unknown version. */
log_error ("keyring_get_keyblock failed: %s\n", gpg_strerror (rc));
goto leave;
}
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index ff348ec69..05f63e928 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -2296,7 +2296,7 @@ parse_key (IOBUF inp, int pkttype, unsigned long pktlen,
log_error ("packet(%d) with unknown version %d\n", pkttype, version);
if (list_mode)
es_fputs (":key packet: [unknown version]\n", listfp);
- err = gpg_error (GPG_ERR_INV_PACKET);
+ err = gpg_error (GPG_ERR_UNKNOWN_VERSION);
goto leave;
}