diff --git a/util/ChangeLog b/util/ChangeLog index d9f82d6d9..3bd5c2fe7 100644 --- a/util/ChangeLog +++ b/util/ChangeLog @@ -1,3 +1,8 @@ +2004-03-01 David Shaw + + * iobuf.c (block_filter): Properly handle a partial body stream + that ends with a 5-byte length that happens to be zero. + 2004-02-28 David Shaw * unsetenv.c: Fixed debugging typo. diff --git a/util/iobuf.c b/util/iobuf.c index 3d55349b8..aae03c9ea 100644 --- a/util/iobuf.c +++ b/util/iobuf.c @@ -1,5 +1,6 @@ /* iobuf.c - file handling - * Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001, 2003, + * 2004 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -666,6 +667,12 @@ block_filter(void *opaque, int control, IOBUF chain, byte *buf, size_t *ret_len) } a->size |= c; a->partial = 2; + if( !a->size ) { + a->eof = 1; + if( !n ) + rc = -1; + break; + } } else { /* next partial body length */ a->size = 1 << (c & 0x1f);