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 12:05:59 +0000 (14:05 +0200)
commite6175055fbca958b7fa43aaf84359574ca7f3ebb
tree332a905606ed1aadfd080cb9f42c9fcf1438b68f
parent0899f6d4be0406c9efbf9c3f342825804f359b5a
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>
(cherry picked from commit 35e40e2d514223c950c2f6d1214e02e92d87e997)

Resolved conflicts:
common/iobuf.c
g10/mainproc.c
common/iobuf.c
g10/mainproc.c