sharing/config: check for invalid permission combination
This commit is contained in:
@@ -69,7 +69,11 @@ def positive_float(value: Any) -> float:
|
|||||||
def rights_permission(value: Any) -> str:
|
def rights_permission(value: Any) -> str:
|
||||||
for permission in value:
|
for permission in value:
|
||||||
if permission not in rights.INTERNAL_PERMISSIONS:
|
if permission not in rights.INTERNAL_PERMISSIONS:
|
||||||
raise ValueError("unsupported permssion %r found in: %r" % (permission, value))
|
raise ValueError("unsupported permission %r found in: %r" % (permission, value))
|
||||||
|
if "p" in value and "P" in value:
|
||||||
|
raise ValueError("invalid combination of permissions (P+p) found in %r", value)
|
||||||
|
if "e" in value and "E" in value:
|
||||||
|
raise ValueError("invalid combination of permissions (E+e) found in %r", value)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -749,6 +749,10 @@ class BaseSharing:
|
|||||||
for permission in request_data[key]:
|
for permission in request_data[key]:
|
||||||
if permission not in rights.INTERNAL_PERMISSIONS:
|
if permission not in rights.INTERNAL_PERMISSIONS:
|
||||||
return httputils.bad_request("Invalid value for Permissions")
|
return httputils.bad_request("Invalid value for Permissions")
|
||||||
|
if "p" in request_data[key] and "P" in request_data[key]:
|
||||||
|
return httputils.bad_request("Invalid combination of Permissions (P+p)")
|
||||||
|
if "e" in request_data[key] and "E" in request_data[key]:
|
||||||
|
return httputils.bad_request("Invalid combination of Permissions (E+e)")
|
||||||
elif key == "PathOrToken":
|
elif key == "PathOrToken":
|
||||||
if ShareType == "token":
|
if ShareType == "token":
|
||||||
if not re.search('^/.token/' + TOKEN_PATTERN_V1 + '/$', request_data[key]):
|
if not re.search('^/.token/' + TOKEN_PATTERN_V1 + '/$', request_data[key]):
|
||||||
|
|||||||
Reference in New Issue
Block a user