From: Danny Al-Gaaf Date: Fri, 8 Feb 2013 15:54:33 +0000 (+0100) Subject: os/FileStore.cc: fix realloc memory leak in error case X-Git-Tag: v0.56.4~65^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b0c6be95b03d9f3dd2badcdcff359ae7bc9684f4;p=ceph.git os/FileStore.cc: fix realloc memory leak in error case Fix error from cppcheck: [src/os/FileStore.cc:512]: (error) Common realloc mistake: 'fiemap' nulled but not freed upon failure Signed-off-by: Danny Al-Gaaf (cherry picked from commit c92a0f552587a232f66620170660d6b2ab6fb3a5) --- diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 1bab9c3c36d8..44f3b571960e 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -490,6 +490,7 @@ bool parse_attrname(char **name) static int do_fiemap(int fd, off_t start, size_t len, struct fiemap **pfiemap) { struct fiemap *fiemap = NULL; + struct fiemap *_realloc_fiemap = NULL; int size; int ret; @@ -509,11 +510,13 @@ static int do_fiemap(int fd, off_t start, size_t len, struct fiemap **pfiemap) size = sizeof(struct fiemap_extent) * (fiemap->fm_mapped_extents); - fiemap = (struct fiemap *)realloc(fiemap, sizeof(struct fiemap) + + _realloc_fiemap = (struct fiemap *)realloc(fiemap, sizeof(struct fiemap) + size); - if (!fiemap) { + if (!_realloc_fiemap) { ret = -ENOMEM; goto done_err; + } else { + fiemap = _realloc_fiemap; } memset(fiemap->fm_extents, 0, size);