aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2015-02-12 17:52:07 +0000
committerWerner Koch <[email protected]>2015-02-12 17:52:07 +0000
commit7e12ec4c7d6df29a7d7935399fccd2594ebb4a7e (patch)
treeae331a9d0dc4f47351c014379cc0a43730ad21dc
parentkbx: Fix resource leak. (diff)
downloadgnupg-7e12ec4c7d6df29a7d7935399fccd2594ebb4a7e.tar.gz
gnupg-7e12ec4c7d6df29a7d7935399fccd2594ebb4a7e.zip
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 <[email protected]> Signed-off-by: Werner Koch <[email protected]> (back ported from commit 39978487863066e59bb657f5fe4e8baab510da7e)
-rw-r--r--g10/parse-packet.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/g10/parse-packet.c b/g10/parse-packet.c
index c374477e4..7b379c131 100644
--- a/g10/parse-packet.c
+++ b/g10/parse-packet.c
@@ -2324,11 +2324,11 @@ parse_trust( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *pkt )
(void)pkttype;
+ pkt->pkt.ring_trust = xmalloc( sizeof *pkt->pkt.ring_trust );
if (pktlen)
{
c = iobuf_get_noeof(inp);
pktlen--;
- pkt->pkt.ring_trust = xmalloc( sizeof *pkt->pkt.ring_trust );
pkt->pkt.ring_trust->trustval = c;
pkt->pkt.ring_trust->sigcache = 0;
if (!c && pktlen==1)
@@ -2346,8 +2346,10 @@ parse_trust( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *pkt )
}
else
{
- if( list_mode )
- fprintf (listfp, ":trust packet: empty\n");
+ pkt->pkt.ring_trust->trustval = 0;
+ pkt->pkt.ring_trust->sigcache = 0;
+ if (list_mode)
+ fprintf (listfp, ":trust packet: empty\n");
}
iobuf_skip_rest (inp, pktlen, 0);
}