--- unlzw.c 2006-12-11 13:54:39.000000000 -0500 +++ unlzw.c.oden 2010-01-20 08:05:45.000000000 -0500 @@ -248,7 +248,8 @@ int unlzw(in, out) int o; resetbuf: - e = insize-(o = (posbits>>3)); + o = posbits >> 3; + e = o <= insize ? insize - o : 0; for (i = 0 ; i < e ; ++i) { inbuf[i] = inbuf[i+o];