From 5e88a09a424b8ce65bfe9a809cfd245286474de3 Mon Sep 17 00:00:00 2001
From: Kegan Dougal <kegan@matrix.org>
Date: Tue, 31 Mar 2015 14:00:25 +0100
Subject: [PATCH] Add same user_id char checks as registration.

---
 synapse/storage/appservice.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

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
-- 
GitLab