From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Whitehouse Date: Thu, 04 Aug 2011 10:56:59 +0100 Subject: [Cluster-devel] [PATCH] tunegfs2: Add some malloc error checking In-Reply-To: <1312451398-3124-1-git-send-email-anprice@redhat.com> References: <1312451398-3124-1-git-send-email-anprice@redhat.com> Message-ID: <1312451819.2712.25.camel@menhir> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, Looks good, Steve. On Thu, 2011-08-04 at 10:49 +0100, Andrew Price wrote: > Static analysis found a possible null pointer dereference due to a > missing check in read_super. The malloc'd memory was also not being > freed on error conditions. This patch adds a check for a null pointer > and frees the allocated memory. > > Signed-off-by: Andrew Price > --- > gfs2/tune/super.c | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/gfs2/tune/super.c b/gfs2/tune/super.c > index 65e8d5b..49d87d6 100644 > --- a/gfs2/tune/super.c > +++ b/gfs2/tune/super.c > @@ -94,14 +94,21 @@ int read_super(struct tunegfs2 *tfs) > int n; > tfs->sb_start = GFS2_SB_ADDR << GFS2_BASIC_BLOCK_SHIFT; > block = malloc(sizeof(char) * GFS2_DEFAULT_BSIZE); > + if (!block) { > + perror("read_super: malloc"); > + return EX_UNAVAILABLE; > + } > n = pread(tfs->fd, block, GFS2_DEFAULT_BSIZE, tfs->sb_start); > if (n < 0) { > perror("read_super: pread"); > + free(block); > return EX_IOERR; > } > tfs->sb = block; > if (be32_to_cpu(tfs->sb->sb_header.mh_magic) != GFS2_MAGIC) { > fprintf(stderr, _("Not a GFS/GFS2 device\n")); > + tfs->sb = NULL; > + free(block); > return EX_IOERR; > } > /* Ensure that table and proto are NULL terminated */