summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorent Le Coz <louiz@louiz.org>2014-08-25 01:08:13 +0200
committerFlorent Le Coz <louiz@louiz.org>2014-08-25 01:08:13 +0200
commitf5ae98aaf18e441ce2d7b924a992d6b827823b23 (patch)
tree3cc7626f8ba3ea80dff5f3419ece379753ac1529
parentaabec8b993748866b9cf3f09ebb7ae7ce2ddc426 (diff)
downloadslixmpp-f5ae98aaf18e441ce2d7b924a992d6b827823b23.tar.gz
slixmpp-f5ae98aaf18e441ce2d7b924a992d6b827823b23.tar.bz2
slixmpp-f5ae98aaf18e441ce2d7b924a992d6b827823b23.tar.xz
slixmpp-f5ae98aaf18e441ce2d7b924a992d6b827823b23.zip
Fix saslprep on the username
Two issues fixed here: - ints are not comparable with bytes, so char was never == to b',', which renders the whole function pointless - The bytes were converted back to “characters” by using chr(), which doesn’t make sense if the username contains characters that fit on more than one bytes. This would trigger an “invalid username” error from the server when using a non-ascii JID.
-rw-r--r--sleekxmpp/util/sasl/mechanisms.py19
1 files changed, 9 insertions, 10 deletions
diff --git a/sleekxmpp/util/sasl/mechanisms.py b/sleekxmpp/util/sasl/mechanisms.py
index d341ed3e..7a7ebf7b 100644
--- a/sleekxmpp/util/sasl/mechanisms.py
+++ b/sleekxmpp/util/sasl/mechanisms.py
@@ -223,17 +223,16 @@ class SCRAM(Mech):
return self.hash(text).digest()
def saslname(self, value):
- escaped = b''
- for char in bytes(value):
- if char == b',':
- escaped += b'=2C'
- elif char == b'=':
- escaped += b'=3D'
+ value = value.decode("utf-8")
+ escaped = []
+ for char in value:
+ if char == ',':
+ escaped += '=2C'
+ elif char == '=':
+ escaped += '=3D'
else:
- if isinstance(char, int):
- char = chr(char)
- escaped += bytes(char)
- return escaped
+ escaped += char
+ return "".join(escaped).encode("utf-8")
def parse(self, challenge):
items = {}