diff options
author | Niels de Vos <ndevos@redhat.com> | 2016-09-13 09:03:56 +0200 |
---|---|---|
committer | Niels de Vos <ndevos@redhat.com> | 2016-10-11 00:14:00 -0700 |
commit | 85e959052148ec481823d55c8b91cdee36da2b43 (patch) | |
tree | 18c1d1c977912a58a6b9dbfe9ec99325ae262d40 /api/src/glfs.h | |
parent | 2e23c62cc50037c8e61bcd9c04348409e7627181 (diff) | |
download | glusterfs-85e959052148ec481823d55c8b91cdee36da2b43.tar.gz glusterfs-85e959052148ec481823d55c8b91cdee36da2b43.tar.xz glusterfs-85e959052148ec481823d55c8b91cdee36da2b43.zip |
gfapi: warn when glfs_realpath() returned malloc'd memory
glfs_realpath() may return memory allocated with malloc(). Depending on
the memory allocator that the application uses, calling free() on the
returned string can cause segmentation faults or other problems.
Functions that allocate memory, need to match the free'ing of the same
memory allocator and memory accounting. glibc/malloc and jemalloc/free
do not match together (other allocators could probably trigger these
problems as well).
Applications need to provide a pre-allocated buffer, or in case
glfs_realpath() allocates the memory, glfs_free() should be used to free
it.
Change-Id: I5d721a7425674aa700db8a7a436cbedb95a5927f
BUG: 1370931
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/15332
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Diffstat (limited to 'api/src/glfs.h')
-rw-r--r-- | api/src/glfs.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/api/src/glfs.h b/api/src/glfs.h index 30600a79c3..c81b7cc5d0 100644 --- a/api/src/glfs.h +++ b/api/src/glfs.h @@ -755,9 +755,11 @@ int glfs_chdir (glfs_t *fs, const char *path) __THROW int glfs_fchdir (glfs_fd_t *fd) __THROW GFAPI_PUBLIC(glfs_fchdir, 3.4.0); -char *glfs_realpath (glfs_t *fs, const char *path, char *resolved_path) __THROW +char *glfs_realpath34 (glfs_t *fs, const char *path, char *resolved_path) __THROW GFAPI_PUBLIC(glfs_realpath, 3.4.0); +char *glfs_realpath (glfs_t *fs, const char *path, char *resolved_path) __THROW + GFAPI_PUBLIC(glfs_realpath, 3.7.17); /* * @cmd and @flock are as specified in man fcntl(2). */ |