gpg: Limit the nesting level of I/O filters.
authorWerner Koch <wk@gnupg.org>
Fri, 4 Oct 2013 06:20:49 +0000 (08:20 +0200)
committerWerner Koch <wk@gnupg.org>
Fri, 4 Oct 2013 06:20:49 +0000 (08:20 +0200)
commit35e40e2d514223c950c2f6d1214e02e92d87e997
tree20252fab46313f212c9d372cac6a4ebf02612556
parentcd1b696b282361d76f4477d80872ed73d33bb1b6
gpg: Limit the nesting level of I/O filters.

* common/iobuf.c (MAX_NESTING_FILTER): New.
(iobuf_push_filter2): Limit the nesting level.

* g10/mainproc.c (mainproc_context): New field ANY.  Change HAVE_DATA
and ANY_SIG_SIGN to bit fields of ANY.  Add bit field
UNCOMPRESS_FAILED.
(proc_compressed): Avoid printing multiple Bad Data messages.
(check_nesting): Return GPG_ERR_BAD_DATA instead of UNEXPECTED_DATA.
--

This is a more general fix for the nested compression packet bug.  In
particular this helps g10/import.c:read_block to stop pushing
compression filters onto an iobuf stream.  This patch also reduces the
number of error messages for the non-import case.

Signed-off-by: Werner Koch <wk@gnupg.org>
common/iobuf.c
g10/mainproc.c