Check for input buffer malloc failure in examples/gzappend.c.
authorMark Adler <madler@alumni.caltech.edu>
Thu, 11 Oct 2012 23:10:59 +0000 (16:10 -0700)
committerMark Adler <madler@alumni.caltech.edu>
Thu, 11 Oct 2012 23:10:59 +0000 (16:10 -0700)
examples/gzappend.c

index 0fc42b97daa2bf942f251be0dd1e25af42c40c99..662dec3794b7c0f799fcb8e9feb1a1f43a3a46da 100644 (file)
@@ -1,7 +1,7 @@
 /* gzappend -- command to append to a gzip file
 
   Copyright (C) 2003, 2012 Mark Adler, all rights reserved
-  version 1.2, 13 Aug 2012
+  version 1.2, 11 Oct 2012
 
   This software is provided 'as-is', without any express or implied
   warranty.  In no event will the author be held liable for any damages
@@ -39,7 +39,8 @@
  *                      - Keep gzip file clean on appended file read errors
  *                      - Use in-place rotate instead of auxiliary buffer
  *                        (Why you ask?  Because it was fun to write!)
- * 1.2  13 Aug 2012     - Fix for proper z_const usage
+ * 1.2  11 Oct 2012     - Fix for proper z_const usage
+ *                      - Check for input buffer malloc failure
  */
 
 /*
@@ -400,14 +401,14 @@ local void gztack(char *name, int gd, z_stream *strm, int last)
     }
 
     /* allocate buffers */
-    in = fd == -1 ? NULL : malloc(CHUNK);
+    in = malloc(CHUNK);
     out = malloc(CHUNK);
-    if (out == NULL) bye("out of memory", "");
+    if (in == NULL || out == NULL) bye("out of memory", "");
 
     /* compress input file and append to gzip file */
     do {
         /* get more input */
-        len = fd == -1 ? 0 : read(fd, in, CHUNK);
+        len = read(fd, in, CHUNK);
         if (len == -1) {
             fprintf(stderr,
                     "gzappend warning: error reading %s, skipping rest ...\n",
@@ -454,7 +455,7 @@ local void gztack(char *name, int gd, z_stream *strm, int last)
 
     /* clean up and return */
     free(out);
-    if (in != NULL) free(in);
+    free(in);
     if (fd > 0) close(fd);
 }
 
@@ -472,7 +473,9 @@ int main(int argc, char **argv)
 
     /* provide usage if no arguments */
     if (*argv == NULL) {
-        printf("gzappend 1.1 (4 Nov 2003) Copyright (C) 2003 Mark Adler\n");
+        printf(
+            "gzappend 1.2 (11 Oct 2012) Copyright (C) 2003, 2012 Mark Adler\n"
+               );
         printf(
             "usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n");
         return 0;