diff options
author | Rajesh Amaravathi <rajesh@redhat.com> | 2012-02-29 15:16:53 +0530 |
---|---|---|
committer | Vijay Bellur <vijay@gluster.com> | 2012-03-05 09:17:47 -0800 |
commit | 6756245b1514374712136c8dc1f4ac2a19a6da21 (patch) | |
tree | f2620650880325ac3d0b280c349372cd50d3382d /xlators/cluster/dht | |
parent | 33b9f156e6b6137e33bd9becfe640166986ecc55 (diff) |
fops/removexattr: prevent users from removing glusterfs xattrs
* Each xlator prevents the user from removing xlator-specific
xattrs like trusted.gfid by handling it in respective removexattr
functions.
* For xlators which did not define remove and fremovexattr,
the functions have been implemented with appropriate checks.
xlator | fops-added
_______________|__________________________
|
1. stripe | removexattr and fremovexattr
2. quota | removexattr and fremovexattr
Change-Id: I98e22109717978134378bc75b2eca83fefb2abba
BUG: 783525
Signed-off-by: Rajesh Amaravathi <rajesh@redhat.com>
Reviewed-on: http://review.gluster.com/2836
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'xlators/cluster/dht')
-rw-r--r-- | xlators/cluster/dht/src/dht-common.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 0d0df320d..d76abdd59 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -2385,8 +2385,12 @@ dht_removexattr (call_frame_t *frame, xlator_t *this, int i; - VALIDATE_OR_GOTO (frame, err); VALIDATE_OR_GOTO (this, err); + + GF_IF_NATIVE_XATTR_GOTO ("trusted.glusterfs.dht*", + key, op_errno, err); + + VALIDATE_OR_GOTO (frame, err); VALIDATE_OR_GOTO (loc, err); VALIDATE_OR_GOTO (loc->inode, err); VALIDATE_OR_GOTO (loc->path, err); @@ -2444,9 +2448,13 @@ dht_fremovexattr (call_frame_t *frame, xlator_t *this, int i; - VALIDATE_OR_GOTO (frame, err); VALIDATE_OR_GOTO (this, err); + GF_IF_NATIVE_XATTR_GOTO ("trusted.glusterfs.dht*", + key, op_errno, err); + + VALIDATE_OR_GOTO (frame, err); + local = dht_local_init (frame, NULL, fd, GF_FOP_FREMOVEXATTR); if (!local) { op_errno = ENOMEM; |