summary refs log tree commit diff
path: root/synapse/storage/appservice.py
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2015-03-31 14:00:25 +0100
committerKegan Dougal <kegan@matrix.org>2015-03-31 14:00:25 +0100
commit5e88a09a424b8ce65bfe9a809cfd245286474de3 (patch)
tree931024bff7162392a928f61e9471c8a431467a31 /synapse/storage/appservice.py
parentUse a sender localpart instead of a user ID. (diff)
downloadsynapse-5e88a09a424b8ce65bfe9a809cfd245286474de3.tar.xz
Add same user_id char checks as registration.
Diffstat (limited to '')
-rw-r--r--synapse/storage/appservice.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/synapse/storage/appservice.py b/synapse/storage/appservice.py
index 557e377ca5..f8cbb3f323 100644
--- a/synapse/storage/appservice.py
+++ b/synapse/storage/appservice.py
@@ -13,6 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 import logging
+import urllib
 import yaml
 from simplejson import JSONDecodeError
 import simplejson as json
@@ -209,7 +210,12 @@ class ApplicationServiceStore(SQLBaseStore):
             if not isinstance(as_info.get(field), basestring):
                 raise KeyError("Required string field: '%s'", field)
 
-        user = UserID(as_info["sender_localpart"], self.hostname)
+        localpart = as_info["sender_localpart"]
+        if urllib.quote(localpart) != localpart:
+            raise ValueError(
+                "sender_localpart needs characters which are not URL encoded."
+            )
+        user = UserID(localpart, self.hostname)
         user_id = user.to_string()
 
         # namespace checks