PR-7634893.diff   [plain text]


diff --git a/unlzw.c b/unlzw.c
index a330f98..586f913 100644
--- unlzw.c
+++ unlzw.c
@@ -253,8 +253,14 @@ int unlzw(in, out)
 	for (i = 0 ; i < e ; ++i) {
 	    inbuf[i] = inbuf[i+o];
 	}
-	insize = e;
+
+	insize = 0;
 	posbits = 0;
+	if (e >= 0) {
+		insize = e;
+	} else {
+		posbits = abs(e)<<3;
+	}
 
 	if (insize < INBUF_EXTRA) {
 	    rsize = read_buffer (in, (char *) inbuf + insize, INBUFSIZ);