mirror of
git://git.gnupg.org/gnupg.git
synced 2025-05-14 08:13:25 +02:00
gpg: Fix a NULL-deref due to empty ring trust packets.
* g10/parse-packet.c (parse_trust): Always allocate a packet. -- Reported-by: Hanno Böck <hanno@hboeck.de> Signed-off-by: Werner Koch <wk@gnupg.org> (back ported from commit 39978487863066e59bb657f5fe4e8baab510da7e) [dkg: rebased to STABLE-BRANCH-1-4] Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
This commit is contained in:
parent
27d7addccf
commit
2e8db53854
@ -2245,11 +2245,13 @@ parse_trust( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *pkt )
|
|||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
|
(void)pkttype;
|
||||||
|
|
||||||
|
pkt->pkt.ring_trust = xmalloc( sizeof *pkt->pkt.ring_trust );
|
||||||
if (pktlen)
|
if (pktlen)
|
||||||
{
|
{
|
||||||
c = iobuf_get_noeof(inp);
|
c = iobuf_get_noeof(inp);
|
||||||
pktlen--;
|
pktlen--;
|
||||||
pkt->pkt.ring_trust = xmalloc( sizeof *pkt->pkt.ring_trust );
|
|
||||||
pkt->pkt.ring_trust->trustval = c;
|
pkt->pkt.ring_trust->trustval = c;
|
||||||
pkt->pkt.ring_trust->sigcache = 0;
|
pkt->pkt.ring_trust->sigcache = 0;
|
||||||
if (!c && pktlen==1)
|
if (!c && pktlen==1)
|
||||||
@ -2267,6 +2269,8 @@ parse_trust( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *pkt )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
pkt->pkt.ring_trust->trustval = 0;
|
||||||
|
pkt->pkt.ring_trust->sigcache = 0;
|
||||||
if (list_mode)
|
if (list_mode)
|
||||||
fprintf (listfp, ":trust packet: empty\n");
|
fprintf (listfp, ":trust packet: empty\n");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user