summaryrefslogtreecommitdiffstats
path: root/xlators/storage/posix/src
diff options
context:
space:
mode:
authorAmar Tumballi <amarts@redhat.com>2018-08-09 13:00:01 +0530
committerAmar Tumballi <amarts@redhat.com>2018-09-05 09:23:26 +0000
commit9ae986f18c0f251cba6bbc23eae2150a8ce0417e (patch)
treef490a0aaa2bde0bfc954abd57570125d206ec148 /xlators/storage/posix/src
parentcc3271ebf3aacdbbc77fdd527375af78ab12ea8d (diff)
server-protocol: don't allow '../' path in 'name'
This will prevent any arbitrary file creation through glusterfs by modifying the client bits. Also check for the similar flaw inside posix too, so we prevent any changes in layers in-between. Fixes: bz#1625095 Signed-off-by: Amar Tumballi <amarts@redhat.com> Change-Id: Id9fe0ef6e86459e8ed85ab947d977f058c5ae06e
Diffstat (limited to 'xlators/storage/posix/src')
-rw-r--r--xlators/storage/posix/src/posix-handle.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/xlators/storage/posix/src/posix-handle.h b/xlators/storage/posix/src/posix-handle.h
index b12e8b9610c..621f8f4d450 100644
--- a/xlators/storage/posix/src/posix-handle.h
+++ b/xlators/storage/posix/src/posix-handle.h
@@ -142,6 +142,12 @@
break; \
} \
\
+ if (strstr (loc->name, "../")) { \
+ gf_msg (this->name, GF_LOG_ERROR, 0, P_MSG_ENTRY_HANDLE_CREATE, \
+ "'../' in name not allowed: (%s)", loc->name); \
+ op_ret = -1; \
+ break; \
+ } \
if (LOC_HAS_ABSPATH (loc)) { \
MAKE_REAL_PATH (entp, this, loc->path); \
__parp = strdupa (entp); \