diff -urN 2.4.19pre3/drivers/net/zlib.c zlib/drivers/net/zlib.c --- 2.4.19pre3/drivers/net/zlib.c Tue May 1 19:35:26 2001 +++ zlib/drivers/net/zlib.c Thu Mar 14 01:37:28 2002 @@ -3860,10 +3860,11 @@ &s->sub.trees.tb, z); if (t != Z_OK) { - ZFREE(z, s->sub.trees.blens); r = t; - if (r == Z_DATA_ERROR) + if (r == Z_DATA_ERROR) { + ZFREE(z, s->sub.trees.blens); s->mode = BADB; + } LEAVE } s->sub.trees.index = 0; @@ -3928,11 +3929,12 @@ #endif t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), s->sub.trees.blens, &bl, &bd, &tl, &td, z); - ZFREE(z, s->sub.trees.blens); if (t != Z_OK) { - if (t == (uInt)Z_DATA_ERROR) + if (t == (uInt)Z_DATA_ERROR) { + ZFREE(z, s->sub.trees.blens); s->mode = BADB; + } r = t; LEAVE } @@ -3949,6 +3951,7 @@ s->sub.decode.tl = tl; s->sub.decode.td = td; } + ZFREE(z, s->sub.trees.blens); s->mode = CODES; case CODES: UPDATE diff -urN 2.4.19pre3/fs/jffs2/zlib.c zlib/fs/jffs2/zlib.c --- 2.4.19pre3/fs/jffs2/zlib.c Tue Jan 22 18:53:53 2002 +++ zlib/fs/jffs2/zlib.c Thu Mar 14 01:37:28 2002 @@ -3860,10 +3860,11 @@ &s->sub.trees.tb, z); if (t != Z_OK) { - ZFREE(z, s->sub.trees.blens); r = t; - if (r == Z_DATA_ERROR) + if (r == Z_DATA_ERROR) { + ZFREE(z, s->sub.trees.blens); s->mode = BADB; + } LEAVE } s->sub.trees.index = 0; @@ -3928,11 +3929,12 @@ #endif t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), s->sub.trees.blens, &bl, &bd, &tl, &td, z); - ZFREE(z, s->sub.trees.blens); if (t != Z_OK) { - if (t == (uInt)Z_DATA_ERROR) + if (t == (uInt)Z_DATA_ERROR) { + ZFREE(z, s->sub.trees.blens); s->mode = BADB; + } r = t; LEAVE } @@ -3949,6 +3951,7 @@ s->sub.decode.tl = tl; s->sub.decode.td = td; } + ZFREE(z, s->sub.trees.blens); s->mode = CODES; case CODES: UPDATE