mirror of
git://git.gnupg.org/gnupg.git
synced 2025-05-24 16:43:28 +02:00
gpg: Fix regression in option "self-sigs-only".
* g10/import.c (read_block): Make sure KEYID is availabale also on a pending packet. -- Reported-by: Phil Pennock Fixes-commit: 2e349bb6173789e0e9e42c32873d89c7bc36cea4 Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
37d758e5f2
commit
eec150eca7
12
g10/import.c
12
g10/import.c
@ -866,6 +866,7 @@ read_block( IOBUF a, unsigned int options,
|
|||||||
kbnode_t root = NULL;
|
kbnode_t root = NULL;
|
||||||
int in_cert, in_v3key, skip_sigs;
|
int in_cert, in_v3key, skip_sigs;
|
||||||
u32 keyid[2];
|
u32 keyid[2];
|
||||||
|
int got_keyid = 0;
|
||||||
unsigned int dropped_nonselfsigs = 0;
|
unsigned int dropped_nonselfsigs = 0;
|
||||||
|
|
||||||
*r_v3keys = 0;
|
*r_v3keys = 0;
|
||||||
@ -874,7 +875,11 @@ read_block( IOBUF a, unsigned int options,
|
|||||||
{
|
{
|
||||||
root = new_kbnode( *pending_pkt );
|
root = new_kbnode( *pending_pkt );
|
||||||
*pending_pkt = NULL;
|
*pending_pkt = NULL;
|
||||||
|
log_assert (root->pkt->pkttype == PKT_PUBLIC_KEY
|
||||||
|
|| root->pkt->pkttype == PKT_SECRET_KEY);
|
||||||
in_cert = 1;
|
in_cert = 1;
|
||||||
|
keyid_from_pk (root->pkt->pkt.public_key, keyid);
|
||||||
|
got_keyid = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
in_cert = 0;
|
in_cert = 0;
|
||||||
@ -994,6 +999,7 @@ read_block( IOBUF a, unsigned int options,
|
|||||||
goto x_default;
|
goto x_default;
|
||||||
if (!(options & IMPORT_SELF_SIGS_ONLY))
|
if (!(options & IMPORT_SELF_SIGS_ONLY))
|
||||||
goto x_default;
|
goto x_default;
|
||||||
|
log_assert (got_keyid);
|
||||||
if (pkt->pkt.signature->keyid[0] == keyid[0]
|
if (pkt->pkt.signature->keyid[0] == keyid[0]
|
||||||
&& pkt->pkt.signature->keyid[1] == keyid[1])
|
&& pkt->pkt.signature->keyid[1] == keyid[1])
|
||||||
{ /* This is likely a self-signature. We import this one.
|
{ /* This is likely a self-signature. We import this one.
|
||||||
@ -1016,6 +1022,11 @@ read_block( IOBUF a, unsigned int options,
|
|||||||
|
|
||||||
case PKT_PUBLIC_KEY:
|
case PKT_PUBLIC_KEY:
|
||||||
case PKT_SECRET_KEY:
|
case PKT_SECRET_KEY:
|
||||||
|
if (!got_keyid)
|
||||||
|
{
|
||||||
|
keyid_from_pk (pkt->pkt.public_key, keyid);
|
||||||
|
got_keyid = 1;
|
||||||
|
}
|
||||||
if (in_cert) /* Store this packet. */
|
if (in_cert) /* Store this packet. */
|
||||||
{
|
{
|
||||||
*pending_pkt = pkt;
|
*pending_pkt = pkt;
|
||||||
@ -1023,7 +1034,6 @@ read_block( IOBUF a, unsigned int options,
|
|||||||
goto ready;
|
goto ready;
|
||||||
}
|
}
|
||||||
in_cert = 1;
|
in_cert = 1;
|
||||||
keyid_from_pk (pkt->pkt.public_key, keyid);
|
|
||||||
goto x_default;
|
goto x_default;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user