gpg: Fix DoS while parsing mangled secret key packets.
authorWerner Koch <wk@gnupg.org>
Sun, 5 Apr 2015 17:42:59 +0000 (19:42 +0200)
committerWerner Koch <wk@gnupg.org>
Sun, 5 Apr 2015 17:42:59 +0000 (19:42 +0200)
commit506eb6fec67f170827777f2f44ced6f50745a0ad
treea50fe0adf21552e5a0bc62bc71e952a273c1059f
parentf34d88364a984947bcd7c344f9532f683b856353
gpg: Fix DoS while parsing mangled secret key packets.

* g10/parse-packet.c (parse_key): Check PKTLEN before calling mpi_read
et al.
--

Due to the missing length checks PKTLEN may turn negative.  Because
PKTLEN is an unsigned int the malloc in read_rest would try to malloc
a too large number and terminate the process with "error reading rest
of packet: Cannot allocate memory".

Reported-by: Hanno Böck.
Signed-off-by: Werner Koch <wk@gnupg.org>
(backported from 2.0 commit 0aac920f23fd07e152fdb7385299c92bb9a4ade3)
g10/parse-packet.c