diff options
| author | Jiffin Tony Thottan <jthottan@redhat.com> | 2018-07-31 14:52:51 +0530 | 
|---|---|---|
| committer | Kaleb KEITHLEY <kkeithle@redhat.com> | 2018-08-13 11:44:55 +0000 | 
| commit | febee007bb1a99d65300630c2a98cbb642b1c8dc (patch) | |
| tree | 48722ec7fdf85daa7c6185418481c3ce59a0194a | |
| parent | cde1d393992f9b44954e0e790b3963fe4fa47e92 (diff) | |
gfapi : Handle the path == "" glfs_resolve_at
Currently there is no check for path = "" in glfs_resolve_at.
So if application sends an empty path, then the function resolves
into the parent inode which is incorrect. Plus modified possible
of "path" with "origpath" in the same function.
Change-Id: Ie5ff9ce4b771607b7dbb3fe00704fe670421792a
fixes: bz#1610236
Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
| -rw-r--r-- | api/src/glfs-resolve.c | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/api/src/glfs-resolve.c b/api/src/glfs-resolve.c index e7dd7dca102..88e2d8926a0 100644 --- a/api/src/glfs-resolve.c +++ b/api/src/glfs-resolve.c @@ -472,14 +472,13 @@ priv_glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at,  	DECLARE_OLD_THIS;  	__GLFS_ENTRY_VALIDATE_FS(fs, invalid_fs); -	path = gf_strdup (origpath); -	if (!path) { -		errno = ENOMEM; -		return -1; -	} +        if (origpath[0] == '\0') { +                errno = EINVAL; +                goto invalid_fs; +        }  	parent = NULL; -	if (at && path[0] != '/') { +	if (at && origpath[0] != '/') {  		/* A relative resolution of a path which starts with '/'  		   is equal to an absolute path resolution.  		*/ @@ -487,10 +486,14 @@ priv_glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at,  	} else {  		inode = inode_ref (subvol->itable->root); -		if (strcmp (path, "/") == 0) +		if (strcmp (origpath, "/") == 0)                          glfs_resolve_root (fs, subvol, inode, &ciatt);  	} +        path = gf_strdup (origpath); +	if (!path) +		goto invalid_fs; +  	for (component = strtok_r (path, "/", &saveptr);  	     component; component = next_component) {  | 
