diff options
| author | Werner Koch <[email protected]> | 2025-10-22 09:19:55 +0000 |
|---|---|---|
| committer | Werner Koch <[email protected]> | 2025-10-22 09:20:10 +0000 |
| commit | db9705ef594d5a2baf0e95e13cf6170b621dfc51 (patch) | |
| tree | 6e3af30eb515254fae7fc818d09ddb7917ddbe17 /g10/sig-check.c | |
| parent | gpg,gpgsm: Serialize write access to keybox/keyring to protect. (diff) | |
| download | gnupg-db9705ef594d5a2baf0e95e13cf6170b621dfc51.tar.gz gnupg-db9705ef594d5a2baf0e95e13cf6170b621dfc51.zip | |
gpg: Avoid potential downgrade to SHA1 in 3rd party key signatures.
* g10/sig-check.c (check_signature_over_key_or_uid): Always initialize
IS_SELFSIG because it is later used to detect SHA1 non-selfsignatures.
--
The value of is_selfsig was also used to decide whether to reject a a
SHA_signature if it is not a self-signature. However, a code path
exists where is_selfsig was set to stub_is_selfsig and not initilaized
in this case.
Fixes-commit: c4f2d9e3e1d77d2f1f168764fcdfed32f7d1dfc4
Reported-by: 8b79fe4dd0581c1cd000e1fbecba9f39e16a396a
Diffstat (limited to 'g10/sig-check.c')
| -rw-r--r-- | g10/sig-check.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/g10/sig-check.c b/g10/sig-check.c index e09be3d75..ff45f2e12 100644 --- a/g10/sig-check.c +++ b/g10/sig-check.c @@ -890,7 +890,7 @@ check_key_signature (ctrl_t ctrl, kbnode_t root, kbnode_t node, * be found. Returns GPG_ERR_BAD_SIGNATURE if the signature is bad. * Other errors codes may be returned if something else goes wrong. * - * IF IS_SELFSIG is not NULL, sets *IS_SELFSIG to 1 if this is a + * If IS_SELFSIG is not NULL, sets *IS_SELFSIG to 1 if this is a * self-signature (by the key's primary key) or 0 if not. * * If RET_PK is not NULL, returns a copy of the public key that @@ -910,6 +910,8 @@ check_signature_over_key_or_uid (ctrl_t ctrl, PKT_public_key *signer, if (!is_selfsig) is_selfsig = &stub_is_selfsig; + *is_selfsig = 0; /* Init early to comply with function description. */ + rc = openpgp_pk_test_algo (sig->pubkey_algo); if (rc) return rc; |
