summaryrefslogtreecommitdiffstats
path: root/libglusterfsclient/src
diff options
context:
space:
mode:
authorShehjar Tikoo <shehjart@zresearch.com>2009-04-07 05:32:47 -0700
committerAnand V. Avati <avati@amp.gluster.com>2009-04-08 15:05:24 +0530
commit47f03734685076fce51eaacb706796d2213bdbf1 (patch)
tree91d9eab9eb85d40a5ce190e74f79e300ca9e3230 /libglusterfsclient/src
parent07fcdfebf25c30811a9313ac3d9a0fdbbceaad6c (diff)
libglusterfsclient: Fix segfault in glusterfs_open
libgf_client_loc_fill gets passed a name=NULL argument. So when this function returns the filled loc argument, this loc is actually missing the inode structure that was to be filled. The segfault actually occurs a few lines later when we try to access fd->flags but fd returned by fd_create is NULL because we'd passed a NULL inode to it, i.e. the loc->inode. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
Diffstat (limited to 'libglusterfsclient/src')
-rwxr-xr-xlibglusterfsclient/src/libglusterfsclient.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libglusterfsclient/src/libglusterfsclient.c b/libglusterfsclient/src/libglusterfsclient.c
index 40273d5de5b..e02cbdc770b 100755
--- a/libglusterfsclient/src/libglusterfsclient.c
+++ b/libglusterfsclient/src/libglusterfsclient.c
@@ -1543,6 +1543,9 @@ glusterfs_open (glusterfs_handle_t handle,
goto out;
}
+ pathname = strdup (path);
+ name = basename (pathname);
+
ret = libgf_client_loc_fill (&loc, ctx, 0, loc.parent->ino, name);
if (ret == -1) {
gf_log ("libglusterfsclient",
@@ -1552,9 +1555,6 @@ glusterfs_open (glusterfs_handle_t handle,
goto out;
}
- pathname = strdup (path);
- name = basename (pathname);
-
this = ctx->gf_ctx.graph;
fd = fd_create (loc.inode, 0);
fd->flags = flags;