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>
This commit is contained in:
parent
cde1d39399
commit
febee007bb
@ -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) {
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user