summaryrefslogtreecommitdiffstats
path: root/xlators/storage/posix/src/posix-helpers.c
diff options
context:
space:
mode:
authorKotresh HR <khiremat@redhat.com>2017-07-10 10:31:27 -0400
committerJeff Darcy <jeff@pl.atyp.us>2017-07-24 13:05:48 +0000
commit96eece8abbb9c06f0b91f37e718ac9e337a3f714 (patch)
treec5d3498254327ef314ae29c038592ae35df22387 /xlators/storage/posix/src/posix-helpers.c
parent668df4e7e452aa26f0e0fbd15691fab0edc83014 (diff)
posix/gfid2path: Block access to gfid2path xattr via mount
gfid2path xattr is an internal xattr and should not be allowed to modify by other applications via gluster mount. This patch blocks the same. Updates: #139 Change-Id: Id2cb29797ee1bd77e0e0d2203a47469fd7203355 Signed-off-by: Kotresh HR <khiremat@redhat.com> Reviewed-on: https://review.gluster.org/17744 Smoke: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Prashanth Pai <ppai@redhat.com> Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com> Reviewed-by: Aravinda VK <avishwan@redhat.com> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'xlators/storage/posix/src/posix-helpers.c')
-rw-r--r--xlators/storage/posix/src/posix-helpers.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/xlators/storage/posix/src/posix-helpers.c b/xlators/storage/posix/src/posix-helpers.c
index 1047c2d..e4cd5d6 100644
--- a/xlators/storage/posix/src/posix-helpers.c
+++ b/xlators/storage/posix/src/posix-helpers.c
@@ -50,6 +50,7 @@
#include "glusterfs3-xdr.h"
#include "hashfn.h"
#include "glusterfs-acl.h"
+#include "posix-gfid-path.h"
#include "events.h"
#include "glusterfsd.h"
#include <sys/types.h>
@@ -756,6 +757,9 @@ _handle_list_xattr (dict_t *xattr_req, const char *real_path, int fdnum,
if (posix_handle_georep_xattrs (NULL, key, NULL, _gf_false))
goto next;
+ if (posix_is_gfid2path_xattr (key))
+ goto next;
+
if (dict_get (filler->xattr, key))
goto next;
@@ -1139,6 +1143,9 @@ posix_handle_pair (xlator_t *this, const char *real_path,
if (XATTR_IS_PATHINFO (key)) {
ret = -EACCES;
goto out;
+ } else if (posix_is_gfid2path_xattr (key)) {
+ ret = -ENOTSUP;
+ goto out;
} else if (ZR_FILE_CONTENT_REQUEST(key)) {
ret = posix_set_file_contents (this, real_path, key, value,
flags);
@@ -1198,6 +1205,9 @@ posix_fhandle_pair (xlator_t *this, int fd,
if (XATTR_IS_PATHINFO (key)) {
ret = -EACCES;
goto out;
+ } else if (posix_is_gfid2path_xattr (key)) {
+ ret = -ENOTSUP;
+ goto out;
} else if (!strncmp(key, POSIX_ACL_ACCESS_XATTR, strlen(key))
&& stbuf && IS_DHT_LINKFILE_MODE (stbuf)) {
goto out;