diff options
author | Michael Simacek <msimacek@redhat.com> | 2015-09-22 10:29:32 +0200 |
---|---|---|
committer | Jan Cholasta <jcholast@redhat.com> | 2016-02-17 10:41:29 +0100 |
commit | 831856ea55abb11139114c4c74563a13b6a1b6cf (patch) | |
tree | 2a54873a03f16527bf4243396cf381d157c04a4e | |
parent | 91e5435c8b56e9e711e20e4173fb068ff131a4d6 (diff) | |
download | freeipa-831856ea55abb11139114c4c74563a13b6a1b6cf.tar.gz freeipa-831856ea55abb11139114c4c74563a13b6a1b6cf.tar.xz freeipa-831856ea55abb11139114c4c74563a13b6a1b6cf.zip |
Fix bytes/string handling in rpc
https://fedorahosted.org/freeipa/ticket/5638
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
-rw-r--r-- | ipalib/rpc.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/ipalib/rpc.py b/ipalib/rpc.py index a165491ad..c70b3a29f 100644 --- a/ipalib/rpc.py +++ b/ipalib/rpc.py @@ -349,7 +349,7 @@ def json_decode_binary(val): elif isinstance(val, list): return tuple(json_decode_binary(v) for v in val) else: - if isinstance(val, six.string_types): + if isinstance(val, bytes): try: return val.decode('utf-8') except UnicodeDecodeError: @@ -400,7 +400,7 @@ def xml_loads(data, encoding='UTF-8'): class DummyParser(object): def __init__(self): - self.data = '' + self.data = b'' def feed(self, data): self.data += data @@ -575,7 +575,7 @@ class KerbTransport(SSLTransport): if token: extra_headers.append( - ('Authorization', 'negotiate %s' % base64.b64encode(token)) + ('Authorization', 'negotiate %s' % base64.b64encode(token).decode('ascii')) ) def _auth_complete(self, response): @@ -586,10 +586,10 @@ class KerbTransport(SSLTransport): k, _, v = field.strip().partition(' ') if k.lower() == 'negotiate': try: - token = base64.b64decode(v) + token = base64.b64decode(v.encode('ascii')) break # b64decode raises TypeError on invalid input - except TypeError: + except (TypeError, UnicodeError): pass if not token: raise KerberosError(message="No valid Negotiate header in server response") @@ -1068,12 +1068,12 @@ class JSONServerProxy(object): response = self.__transport.request( self.__host, self.__handler, - json.dumps(payload), + json.dumps(payload).encode('utf-8'), verbose=self.__verbose >= 3, ) try: - response = json_decode_binary(json.loads(response)) + response = json_decode_binary(json.loads(response.decode('ascii'))) except ValueError as e: raise JSONError(str(e)) |