Imported Upstream version 1.4
[debian/gzip] / unlzw.c
diff --git a/unlzw.c b/unlzw.c
index 5cf95b530f517c5ed256d3eaa71ef424bab30c4b..8f8cbeee16fa007762ae842d76e1ad1398c6066b 100644 (file)
--- a/unlzw.c
+++ b/unlzw.c
 #include <config.h>
 #include "tailor.h"
 
-#ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-#endif
-#ifdef HAVE_FCNTL_H
-#  include <fcntl.h>
-#endif
+#include <unistd.h>
+#include <fcntl.h>
 
 #include "gzip.h"
 #include "lzw.h"
@@ -244,7 +240,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];