diff options
author | Werner Koch <wk@gnupg.org> | 2022-12-16 15:24:33 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2022-12-16 15:34:41 +0100 |
commit | 49d16f4f6edf872babf04ae383974d891871a33b (patch) | |
tree | 1a9307db818ded272ae26d2cf091e6a42f32b2e9 | |
parent | gpg: Replace use of PRIu64 in log_debug (diff) | |
download | gnupg2-49d16f4f6edf872babf04ae383974d891871a33b.tar.xz gnupg2-49d16f4f6edf872babf04ae383974d891871a33b.zip |
gpg: Do not continue the export after a cancel for the primary key.
* g10/export.c (do_export_one_keyblock): Handle a cancel for the
primary key special.
--
GnuPG-bug-id: 6093
-rw-r--r-- | g10/export.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/g10/export.c b/g10/export.c index 61b5e9a13..b3ad69718 100644 --- a/g10/export.c +++ b/g10/export.c @@ -2026,7 +2026,16 @@ do_export_one_keyblock (ctrl_t ctrl, kbnode_t keyblock, u32 *keyid, hexgrip, pk, NULL); if (err) { - if (gpg_err_code (err) == GPG_ERR_FULLY_CANCELED) + /* If we receive a fully canceled error we stop + * immediately. If we receive a cancel for a public + * key we also stop immediately because a + * public/secret key is always required first + * (right, we could instead write a stub key but + * that is also kind of surprising). If we receive + * a subkey we skip to the next subkey. */ + if (gpg_err_code (err) == GPG_ERR_FULLY_CANCELED + || (node->pkt->pkttype == PKT_PUBLIC_KEY + && gpg_err_code (err) == GPG_ERR_CANCELED)) goto leave; write_status_error ("export_keys.secret", err); skip_until_subkey = 1; |