1 files changed, 21 insertions, 0 deletions
diff --git a/synapse/events/validator.py b/synapse/events/validator.py
index 47830aa985..ebc6c30e62 100644
--- a/synapse/events/validator.py
+++ b/synapse/events/validator.py
@@ -69,3 +69,24 @@ class EventValidator(object):
self.validate(event)
UserID.from_string(event.sender)
+
+ if event.type == EventTypes.Message:
+ strings = [
+ "body",
+ "msgtype",
+ ]
+
+ self._ensure_strings(event.content, strings)
+
+ elif event.type == EventTypes.Topic:
+ self._ensure_strings(event.content, ["topic"])
+
+ elif event.type == EventTypes.Name:
+ self._ensure_strings(event.content, ["name"])
+
+ def _ensure_strings(self, d, keys):
+ for s in keys:
+ if s not in d:
+ raise SynapseError(400, "'%s' not in content" % (s,))
+ if not isinstance(d[s], basestring):
+ raise SynapseError(400, "Not '%s' a string type" % (s,))
|