* iobuf.c (block_filter): Properly handle a partial body stream that ends
authorDavid Shaw <dshaw@jabberwocky.com>
Mon, 1 Mar 2004 21:48:32 +0000 (21:48 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Mon, 1 Mar 2004 21:48:32 +0000 (21:48 +0000)
with a 5-byte length that happens to be zero.

util/ChangeLog
util/iobuf.c

index d9f82d6..3bd5c2f 100644 (file)
@@ -1,3 +1,8 @@
+2004-03-01  David Shaw  <dshaw@jabberwocky.com>
+
+       * 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  <dshaw@jabberwocky.com>
 
        * unsetenv.c: Fixed debugging typo.
index 3d55349..aae03c9 100644 (file)
@@ -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);