Allow backslashes in event field filters
Fixes a bug introduced in https://github.com/matrix-org/synapse/pull/1783 which meant that single backslashes were not allowed in event field filters. The intention here is to allow single-backslashes, but disallow double-backslashes.pull/4083/head
parent
e0b9d5f0af
commit
7e07d25ed6
|
@ -0,0 +1 @@
|
|||
Fix bug which prevented backslashes being used in event field filters
|
|
@ -172,7 +172,10 @@ USER_FILTER_SCHEMA = {
|
|||
# events a lot easier as we can then use a negative lookbehind
|
||||
# assertion to split '\.' If we allowed \\ then it would
|
||||
# incorrectly split '\\.' See synapse.events.utils.serialize_event
|
||||
"pattern": "^((?!\\\).)*$"
|
||||
#
|
||||
# Note that because this is a regular expression, we have to escape
|
||||
# each backslash in the pattern.
|
||||
"pattern": r"^((?!\\\\).)*$"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -60,7 +60,7 @@ class FilteringTestCase(unittest.TestCase):
|
|||
invalid_filters = [
|
||||
{"boom": {}},
|
||||
{"account_data": "Hello World"},
|
||||
{"event_fields": ["\\foo"]},
|
||||
{"event_fields": [r"\\foo"]},
|
||||
{"room": {"timeline": {"limit": 0}, "state": {"not_bars": ["*"]}}},
|
||||
{"event_format": "other"},
|
||||
{"room": {"not_rooms": ["#foo:pik-test"]}},
|
||||
|
@ -109,6 +109,16 @@ class FilteringTestCase(unittest.TestCase):
|
|||
"event_format": "client",
|
||||
"event_fields": ["type", "content", "sender"],
|
||||
},
|
||||
|
||||
# a single backslash should be permitted (though it is debatable whether
|
||||
# it should be permitted before anything other than `.`, and what that
|
||||
# actually means)
|
||||
#
|
||||
# (note that event_fields is implemented in
|
||||
# synapse.events.utils.serialize_event, and so whether this actually works
|
||||
# is tested elsewhere. We just want to check that it is allowed through the
|
||||
# filter validation)
|
||||
{"event_fields": [r"foo\.bar"]},
|
||||
]
|
||||
for filter in valid_filters:
|
||||
try:
|
||||
|
|
Loading…
Reference in New Issue