crossbario / crossbario/autobahn-python

Unicode characters in authid result in uncaught exception and connection abort

Open
#493 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2.5k
Forks
768
PR merge metrics
No merged PRs in 30d

Description

Log:

2015-09-09 18:58:07+0200 [Router       3722] connection accepted from peer tcp4:192.168.192.10:9888
2015-09-09 18:58:07+0200 [Router       3722] RX Octets from tcp4:192.168.192.10:9888 : octets = 474554202f20485454502f312e310d0a486f73743a203139322e3136382e3139322e32383a383038300d0a436f6e6e656374696f6e3a20557067726164650d0a507261676d613a206e6f2d63616368650d0a43616368652d436f6e74726f6c3a206e6f2d63616368650d0a557067726164653a20776562736f636b65740d0a4f726967696e3a20687474703a2f2f3139322e3136382e3139322e32383a393939390d0a5365632d576562536f636b65742d56657273696f6e3a2031330d0a557365722d4167656e743a204d6f7a696c6c612f352e30202857696e646f7773204e5420362e313b20574f57363429204170706c655765624b69742f3533372e333620284b48544d4c2c206c696b65204765636b6f29204368726f6d652f34352e302e323435342e3835205361666172692f3533372e33360d0a4163636570742d456e636f64696e673a20677a69702c206465666c6174652c20736463680d0a4163636570742d4c616e67756167653a2064652d44452c64653b713d302e382c656e2d55533b713d302e362c656e3b713d302e340d0a5365632d576562536f636b65742d4b65793a20574975737678354f76673642594a354a4547574e74413d3d0d0a5365632d576562536f636b65742d457874656e73696f6e733a207065726d6573736167652d6465666c6174653b20636c69656e745f6d61785f77696e646f775f626974730d0a5365632d576562536f636b65742d50726f746f636f6c3a2077616d702e322e6a736f6e0d0a0d0a
2015-09-09 18:58:07+0200 [Router       3722] received HTTP request:
2015-09-09 18:58:07+0200 [Router       3722] GET / HTTP/1.1
2015-09-09 18:58:07+0200 [Router       3722] Host: 192.168.192.28:8080
2015-09-09 18:58:07+0200 [Router       3722] Connection: Upgrade
2015-09-09 18:58:07+0200 [Router       3722] Pragma: no-cache
2015-09-09 18:58:07+0200 [Router       3722] Cache-Control: no-cache
2015-09-09 18:58:07+0200 [Router       3722] Upgrade: websocket
2015-09-09 18:58:07+0200 [Router       3722] Origin: http://192.168.192.28:9999
2015-09-09 18:58:07+0200 [Router       3722] Sec-WebSocket-Version: 13
2015-09-09 18:58:07+0200 [Router       3722] User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
2015-09-09 18:58:07+0200 [Router       3722] Accept-Encoding: gzip, deflate, sdch
2015-09-09 18:58:07+0200 [Router       3722] Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
2015-09-09 18:58:07+0200 [Router       3722] Sec-WebSocket-Key: WIusvx5Ovg6BYJ5JEGWNtA==
2015-09-09 18:58:07+0200 [Router       3722] Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
2015-09-09 18:58:07+0200 [Router       3722] Sec-WebSocket-Protocol: wamp.2.json
2015-09-09 18:58:07+0200 [Router       3722] received HTTP status line in opening handshake : GET / HTTP/1.1
2015-09-09 18:58:07+0200 [Router       3722] Unable to format event {'log_namespace': 'crossbar.router.protocol.CrossbarWampWebSocketServerFactory', 'log_level': <LogLevel=debug>, 'format': '%(log_legacy)s', 'time': 1441817887.015845, 'log_source': <crossbar.router.protocol.CrossbarWampWebSocketServerFactory object at 0x7fde073fe2d0>, 'log_format': "received HTTP headers in opening handshake : {u'origin': u'http://192.168.192.28:9999', u'upgrade': u'websocket', u'accept-language': u'de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4', u'accept-encoding': u'gzip, deflate, sdch', u'sec-websocket-version': u'13', u'sec-websocket-protocol': u'wamp.2.json', u'connection': u'Upgrade', u'sec-websocket-key': u'WIusvx5Ovg6BYJ5JEGWNtA==', u'user-agent': u'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36', u'host': u'192.168.192.28:8080', u'pragma': u'no-cache', u'cache-control': u'no-cache', u'sec-websocket-extensions': u'permessage-deflate; client_max_window_bits'}", 'system': '-', 'log_logger': <Logger 'crossbar.router.protocol.CrossbarWampWebSocketServerFactory'>, 'message': (), 'log_time': 1441817887.015845}: u"u'origin'"
2015-09-09 18:58:07+0200 [Router       3722] Cookie tracking disabled on WebSocket connection <crossbar.router.protocol.CrossbarWampWebSocketServerProtocol object at 0x7fde07339b90>
2015-09-09 18:58:07+0200 [Router       3722] Unable to format event {'log_namespace': 'crossbar.router.protocol.CrossbarWampWebSocketServerFactory', 'log_level': <LogLevel=debug>, 'format': '%(log_legacy)s', 'time': 1441817887.016054, 'log_source': <crossbar.router.protocol.CrossbarWampWebSocketServerFactory object at 0x7fde073fe2d0>, 'log_format': "parsed WebSocket extension 'permessage-deflate' with params '{'client_max_window_bits': [True]}'", 'system': '-', 'log_logger': <Logger 'crossbar.router.protocol.CrossbarWampWebSocketServerFactory'>, 'message': (), 'log_time': 1441817887.016054}: u"'client_max_window_bits'"
2015-09-09 18:58:07+0200 [Router       3722] client request permessage-compress extension, but we did not accept any offer [[PerMessageDeflateOffer(acceptNoContextTakeover = True, acceptMaxWindowBits = True, requestNoContextTakeover = False, requestMaxWindowBits = 0)]]
2015-09-09 18:58:07+0200 [Router       3722] sending HTTP response:
2015-09-09 18:58:07+0200 [Router       3722] HTTP/1.1 101 Switching Protocols
2015-09-09 18:58:07+0200 [Router       3722] Server: Crossbar/0.10.4
2015-09-09 18:58:07+0200 [Router       3722] X-Powered-By: AutobahnPython/0.10.6
2015-09-09 18:58:07+0200 [Router       3722] Upgrade: WebSocket
2015-09-09 18:58:07+0200 [Router       3722] Connection: Upgrade
2015-09-09 18:58:07+0200 [Router       3722] Sec-WebSocket-Protocol: wamp.2.json
2015-09-09 18:58:07+0200 [Router       3722] Sec-WebSocket-Accept: O+S512Dk6QUWT8ta+V4NzuvPtJI=
2015-09-09 18:58:07+0200 [Router       3722] TX Octets to tcp4:192.168.192.10:9888 : sync = False, octets = 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a2043726f73736261722f302e31302e340d0a582d506f77657265642d42793a204175746f6261686e507974686f6e2f302e31302e360d0a557067726164653a20576562536f636b65740d0a436f6e6e656374696f6e3a20557067726164650d0a5365632d576562536f636b65742d50726f746f636f6c3a2077616d702e322e6a736f6e0d0a5365632d576562536f636b65742d4163636570743a204f2b53353132446b36515557543874612b56344e7a757650744a493d0d0a0d0a
2015-09-09 18:58:07+0200 [Router       3722] RX Octets from tcp4:192.168.192.10:9888 : octets = 81fe023ff339975ea808bb7c9e58fe30d115ec7c8156fb3b801bad25d15af6329f5ce57cc942b5389658e32b815ce47cc942b53d9255fb3b8166fe3a9657e3379550f43f8750f830d103e32c865cbb7c834bf839815ce42d9a4ff2019058fb32ac4bf22d8655e32dd103e32c865cea23df1bf43f9f55f23bd103ec7c955cf62a864bf22dd103ec7c9058fb32964bc837975cf92a9a5ffe3d924dfe319d1bad2a814cf272d149f62a875ce530ac5bf62d965dc82c965efe2d874bf62a9a56f97cc94de52b9615b52d9b58e53b9766e53b9450e42a8158e3379c57b564874be23bdf1be72c9c5ee53b804afe289666f43f9f55c82c964ae232874ab564874be23bdf1be53b9450e42a8158e3379c57c82c964ff83d924dfe319d1bad2a814cf2238e15b52e865bfb378051f22cd103ec7c955cf62a864bf22dd103ec7c834cf5329a4aff3b8166fe3a9657e3379550f43f8750f830d103e32c865cbb7c804cf52d904bfe3c964bc83c9f58f4358451fe2a9666fb37804dfe30941bad2a814cf272d149e23c9f50e436964bc83b8b5afb2b8050f830d103e32c865cea23df1be42b914af42c9a5bf22cd103ec7c955cf62a864bf22dd103ec7c834cf5329a4aff3b8166fe3a9657e3379550f43f8750f830d103e32c865cbb7c8358e32a964bf9019158e43b9766e42b914af42c9a49e3379c57b564874be23bdf1be42b914af42c9a49e3379c57c82c964ff83d924dfe319d1bad2a814cf2238e44bb7c924ce3369e5ce3369c5de47cc962b5299254e73d8158b503df1bf62b8751fe3ad103b52e308554fad144ca
2015-09-09 18:58:07+0200 [Router       3722] Unable to format event {'log_namespace': 'crossbar.router.protocol.CrossbarWampWebSocketServerFactory', 'log_level': <LogLevel=debug>, 'format': '%(log_legacy)s', 'time': 1441817887.017671, 'log_source': <crossbar.router.protocol.CrossbarWampWebSocketServerFactory object at 0x7fde073fe2d0>, 'log_format': 'RX Frame from tcp4:192.168.192.10:9888 : fin = True, rsv = 0, opcode = 1, mask = f339975e, length = 575, payload = [1,"main",{"roles":{"caller":{"features":{"caller_identification":true,"progressive_call_results":true}},"callee":{"features":{"caller_identification":true,"pattern_based_registration":true,"shared_registration":true,"progressive_call_results":true,"registration_revocation":true}},"publisher":{"features":{"publisher_identification":true,"subscriber_blackwhite_listing":true,"publisher_exclusion":true}},"subscriber":{"features":{"publisher_identification":true,"pattern_based_subscription":true,"subscription_revocation":true}}},"authmethods":["wampcra"],"authid":"p\xc3\xbc\xc3\xa4"}]', 'system': '-', 'log_logger': <Logger 'crossbar.router.protocol.CrossbarWampWebSocketServerFactory'>, 'message': (), 'log_time': 1441817887.017671}: u'"roles"'
2015-09-09 18:58:07+0200 [Router       3722] Traceback (most recent call last):
2015-09-09 18:58:07+0200 [Router       3722] File "/usr/local/lib/python2.7/dist-packages/autobahn/wamp/websocket.py", line 95, in onMessage
2015-09-09 18:58:07+0200 [Router       3722] print("RX {0}".format(msg))
2015-09-09 18:58:07+0200 [Router       3722] File "/usr/local/lib/python2.7/dist-packages/autobahn/wamp/message.py", line 343, in __str__
2015-09-09 18:58:07+0200 [Router       3722] return "WAMP HELLO Message (realm = {0}, roles = {1}, authmethods = {2}, authid = {3})".format(self.realm, self.roles, self.authmethods, self.authid)
2015-09-09 18:58:07+0200 [Router       3722] UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-2: ordinal not in range(128)
2015-09-09 18:58:07+0200 [Router       3722] Failing WAMP-over-WebSocket transport: code = 1011, reason = 'WAMP Internal Error ('ascii' codec can't encode characters in position 1-2: ordinal not in range(128))'

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at autobahn/wamp/message.py, especially the str method named in the traceback, and follow its call from autobahn/wamp/websocket.py onMessage. Reproduce a WAMP HELLO with a non-ASCII authid and verify that formatting no longer raises UnicodeEncodeError or aborts the WebSocket transport.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.