From dd2e092339627c03cd0f506f3ef1be3e98d5ff83 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Wed, 29 Sep 2021 11:30:00 +0900 Subject: [PATCH] gpg: Handle backsig for v5 signature. * g10/getkey.c (merge_selfsigs_subkey): Check v5 signature correctly. -- GnuPG-bug-id: 5628 Signed-off-by: NIIBE Yutaka --- g10/getkey.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/g10/getkey.c b/g10/getkey.c index cf734db24..e49718e68 100644 --- a/g10/getkey.c +++ b/g10/getkey.c @@ -3359,9 +3359,10 @@ merge_selfsigs_subkey (ctrl_t ctrl, kbnode_t keyblock, kbnode_t subnode) while ((p = enum_sig_subpkt (sig, 1, SIGSUBPKT_SIGNATURE, &n, &seq, NULL))) - if (n > 3 - && ((p[0] == 3 && p[2] == 0x19) || (p[0] == 4 && p[1] == 0x19))) - { + if (n > 3 + && ((p[0] == 3 && p[2] == 0x19) || (p[0] == 4 && p[1] == 0x19) + || (p[0] == 5 && p[1] == 0x19))) + { PKT_signature *tempsig = buf_to_sig (p, n); if (tempsig) { @@ -3384,9 +3385,10 @@ merge_selfsigs_subkey (ctrl_t ctrl, kbnode_t keyblock, kbnode_t subnode) * is located on the selfsig for convenience, not security. */ while ((p = enum_sig_subpkt (sig, 0, SIGSUBPKT_SIGNATURE, &n, &seq, NULL))) - if (n > 3 - && ((p[0] == 3 && p[2] == 0x19) || (p[0] == 4 && p[1] == 0x19))) - { + if (n > 3 + && ((p[0] == 3 && p[2] == 0x19) || (p[0] == 4 && p[1] == 0x19) + || (p[0] == 5 && p[1] == 0x19))) + { PKT_signature *tempsig = buf_to_sig (p, n); if (tempsig) {