mirror of
git://git.gnupg.org/gnupg.git
synced 2025-05-24 16:43:28 +02:00
Parse v5 signature subpacket.
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
bdb5136518
commit
412c8fcdfd
@ -2188,10 +2188,18 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||||||
sig->flags.revocable = 1;
|
sig->flags.revocable = 1;
|
||||||
if (is_v4or5) /* Read subpackets. */
|
if (is_v4or5) /* Read subpackets. */
|
||||||
{
|
{
|
||||||
if (pktlen < 2)
|
if (pktlen < 2 || (sig->version == 5 && pktlen < 4))
|
||||||
goto underflow;
|
goto underflow;
|
||||||
n = read_16 (inp);
|
if (sig->version == 5)
|
||||||
pktlen -= 2; /* Length of hashed data. */
|
{
|
||||||
|
n = read_32 (inp);
|
||||||
|
pktlen -= 4; /* Length of hashed data. */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n = read_16 (inp);
|
||||||
|
pktlen -= 2; /* Length of hashed data. */
|
||||||
|
}
|
||||||
if (pktlen < n)
|
if (pktlen < n)
|
||||||
goto underflow;
|
goto underflow;
|
||||||
if (n > 10000)
|
if (n > 10000)
|
||||||
@ -2218,10 +2226,18 @@ parse_signature (IOBUF inp, int pkttype, unsigned long pktlen,
|
|||||||
}
|
}
|
||||||
pktlen -= n;
|
pktlen -= n;
|
||||||
}
|
}
|
||||||
if (pktlen < 2)
|
if (pktlen < 2 || (sig->version == 5 && pktlen < 4))
|
||||||
goto underflow;
|
goto underflow;
|
||||||
n = read_16 (inp);
|
if (sig->version == 5)
|
||||||
pktlen -= 2; /* Length of unhashed data. */
|
{
|
||||||
|
n = read_32 (inp);
|
||||||
|
pktlen -= 4; /* Length of unhashed data. */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
n = read_16 (inp);
|
||||||
|
pktlen -= 2; /* Length of unhashed data. */
|
||||||
|
}
|
||||||
if (pktlen < n)
|
if (pktlen < n)
|
||||||
goto underflow;
|
goto underflow;
|
||||||
if (n > 10000)
|
if (n > 10000)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user