diff --git a/tests/handlers/test_user_directory.py b/tests/handlers/test_user_directory.py
index 96e2e3039b..4d658d29ca 100644
--- a/tests/handlers/test_user_directory.py
+++ b/tests/handlers/test_user_directory.py
@@ -1007,6 +1007,34 @@ class UserDirectoryTestCase(unittest.HomeserverTestCase):
self.assertEqual(in_public, {(bob, room1), (bob, room2)})
self.assertEqual(in_private, set())
+ def test_ignore_display_names_with_null_codepoints(self) -> None:
+ MXC_DUMMY = "mxc://dummy"
+
+ # Alice creates a public room.
+ alice = self.register_user("alice", "pass")
+
+ # Alice has a user directory entry to start with.
+ self.assertIn(
+ alice,
+ self.get_success(self.user_dir_helper.get_profiles_in_user_directory()),
+ )
+
+ # Alice changes her name to include a null codepoint.
+ self.get_success(
+ self.hs.get_user_directory_handler().handle_local_profile_change(
+ alice,
+ ProfileInfo(
+ display_name="abcd\u0000efgh",
+ avatar_url=MXC_DUMMY,
+ ),
+ )
+ )
+ # Alice's profile should be updated with the new avatar, but no display name.
+ self.assertEqual(
+ self.get_success(self.user_dir_helper.get_profiles_in_user_directory()),
+ {alice: ProfileInfo(display_name=None, avatar_url=MXC_DUMMY)},
+ )
+
class TestUserDirSearchDisabled(unittest.HomeserverTestCase):
servlets = [
|