]> git.lizzy.rs Git - zlib.git/blobdiff - gzread.c
Change version number to zlib 1.2.9.1.
[zlib.git] / gzread.c
index 38111578a8c228eb398e644d09e32f96a9754bf7..956b91ea7d9e2a7cd554f7d6561142509b655244 100644 (file)
--- a/gzread.c
+++ b/gzread.c
@@ -1,5 +1,5 @@
 /* gzread.c -- zlib functions for reading gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013 Mark Adler
+ * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
  * For conditions of distribution and use, see copyright notice in zlib.h
  */
 
@@ -24,11 +24,15 @@ local int gz_load(state, buf, len, have)
     unsigned len;
     unsigned *have;
 {
-    z_ssize_t ret;
+    int ret;
+    unsigned get, max = ((unsigned)-1 >> 2) + 1;
 
     *have = 0;
     do {
-        ret = read(state->fd, buf + *have, len - *have);
+        get = len - *have;
+        if (get > max)
+            get = max;
+        ret = read(state->fd, buf + *have, get);
         if (ret <= 0)
             break;
         *have += (unsigned)ret;