Check for input buffer malloc failure in examples/gzappend.c.
This commit is contained in:
parent
c4888637ea
commit
e69a9ceee0
@ -1,7 +1,7 @@
|
|||||||
/* gzappend -- command to append to a gzip file
|
/* gzappend -- command to append to a gzip file
|
||||||
|
|
||||||
Copyright (C) 2003, 2012 Mark Adler, all rights reserved
|
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
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the author be held liable for any damages
|
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
|
* - Keep gzip file clean on appended file read errors
|
||||||
* - Use in-place rotate instead of auxiliary buffer
|
* - Use in-place rotate instead of auxiliary buffer
|
||||||
* (Why you ask? Because it was fun to write!)
|
* (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 */
|
/* allocate buffers */
|
||||||
in = fd == -1 ? NULL : malloc(CHUNK);
|
in = malloc(CHUNK);
|
||||||
out = 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 */
|
/* compress input file and append to gzip file */
|
||||||
do {
|
do {
|
||||||
/* get more input */
|
/* get more input */
|
||||||
len = fd == -1 ? 0 : read(fd, in, CHUNK);
|
len = read(fd, in, CHUNK);
|
||||||
if (len == -1) {
|
if (len == -1) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"gzappend warning: error reading %s, skipping rest ...\n",
|
"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 */
|
/* clean up and return */
|
||||||
free(out);
|
free(out);
|
||||||
if (in != NULL) free(in);
|
free(in);
|
||||||
if (fd > 0) close(fd);
|
if (fd > 0) close(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -472,7 +473,9 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
/* provide usage if no arguments */
|
/* provide usage if no arguments */
|
||||||
if (*argv == NULL) {
|
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(
|
printf(
|
||||||
"usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n");
|
"usage: gzappend [-level] file.gz [ addthis [ andthis ... ]]\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user