On Tue, Jul 29, 2014 at 06:47:40PM +0200, Pino Toscano wrote:
Make sure to report the failure (usually exiting) in case of memory allocation failures. --- src/ext2fs-c.c | 4 ++++ src/init.c | 13 +++++++++++++ 2 files changed, 17 insertions(+)
diff --git a/src/ext2fs-c.c b/src/ext2fs-c.c index a265ad9..99f4d3c 100644 --- a/src/ext2fs-c.c +++ b/src/ext2fs-c.c @@ -615,6 +615,10 @@ ext2_copy_file (ext2_filsys fs, const char *src, const char *dest) if (fp == NULL) goto cont; new_dirname = malloc (PATH_MAX+1); + if (new_dirname == NULL) { + pclose (fp); + goto cont; + } if (fgets (new_dirname, PATH_MAX, fp) == NULL) { pclose (fp); goto cont; diff --git a/src/init.c b/src/init.c index 73efdff..6b3dc7e 100644 --- a/src/init.c +++ b/src/init.c @@ -307,6 +307,11 @@ insmod (const char *filename) errno = 0; size = 0;
+ if (!buf) { + perror("malloc"); + exit (EXIT_FAILURE); + } + #ifdef HAVE_LZMA_STATIC if (ends_with(filename, ".xz")) { lzma_stream strm = LZMA_STREAM_INIT; @@ -350,6 +355,10 @@ insmod (const char *filename) const size_t num = tmpsize - strm.avail_out; if (num > capacity) { buf = (char*) realloc (buf, size*2); + if (!buf) { + perror("realloc"); + exit (EXIT_FAILURE); + } capacity = size; } memcpy (buf+size, tmp_out, num); @@ -380,6 +389,10 @@ insmod (const char *filename) while ((num = gzread (gzfp, tmp, tmpsize)) > 0) { if (num > capacity) { buf = (char*) realloc (buf, size*2); + if (!buf) { + perror("realloc"); + exit (EXIT_FAILURE); + } capacity = size; } memcpy (buf+size, tmp, num);
ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html