diff options
Diffstat (limited to 'api/src/glfs-fops.c')
| -rw-r--r-- | api/src/glfs-fops.c | 50 | 
1 files changed, 50 insertions, 0 deletions
diff --git a/api/src/glfs-fops.c b/api/src/glfs-fops.c index 4988137f363..c1af46b48f1 100644 --- a/api/src/glfs-fops.c +++ b/api/src/glfs-fops.c @@ -2847,12 +2847,25 @@ glfs_getxattr_common (struct glfs *fs, const char *path, const char *name,          DECLARE_OLD_THIS;          __GLFS_ENTRY_VALIDATE_FS (fs, invalid_fs); +        if (!name || *name == '\0') { +                ret = -1; +                errno = EINVAL; +                goto invalid_fs; +        } + +        if (strlen(name) > GF_XATTR_NAME_MAX) { +                ret = -1; +                errno = ENAMETOOLONG; +                goto invalid_fs; +        } +  	subvol = glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO;  		goto out;  	} +  retry:  	if (follow)  		ret = glfs_resolve (fs, subvol, path, &loc, &iatt, reval); @@ -2917,6 +2930,18 @@ pub_glfs_fgetxattr (struct glfs_fd *glfd, const char *name, void *value,          DECLARE_OLD_THIS;  	__GLFS_ENTRY_VALIDATE_FD (glfd, invalid_fs); +        if (!name || *name == '\0') { +                ret = -1; +                errno = EINVAL; +                goto invalid_fs; +        } + +        if (strlen(name) > GF_XATTR_NAME_MAX) { +                ret = -1; +                errno = ENAMETOOLONG; +                goto invalid_fs; +        } +  	subvol = glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1; @@ -3110,12 +3135,25 @@ glfs_setxattr_common (struct glfs *fs, const char *path, const char *name,          DECLARE_OLD_THIS;          __GLFS_ENTRY_VALIDATE_FS (fs, invalid_fs); +        if (!name || *name == '\0') { +                ret = -1; +                errno = EINVAL; +                goto invalid_fs; +        } + +        if (strlen(name) > GF_XATTR_NAME_MAX) { +                ret = -1; +                errno = ENAMETOOLONG; +                goto invalid_fs; +        } +  	subvol = glfs_active_subvol (fs);  	if (!subvol) {  		ret = -1;  		errno = EIO;  		goto out;  	} +  retry:  	if (follow)  		ret = glfs_resolve (fs, subvol, path, &loc, &iatt, reval); @@ -3185,6 +3223,18 @@ pub_glfs_fsetxattr (struct glfs_fd *glfd, const char *name, const void *value,          DECLARE_OLD_THIS;  	__GLFS_ENTRY_VALIDATE_FD (glfd, invalid_fs); +        if (!name || *name == '\0') { +                ret = -1; +                errno = EINVAL; +                goto invalid_fs; +        } + +        if (strlen(name) > GF_XATTR_NAME_MAX) { +                ret = -1; +                errno = ENAMETOOLONG; +                goto invalid_fs; +        } +  	subvol = glfs_active_subvol (glfd->fs);  	if (!subvol) {  		ret = -1;  | 
