summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Simacek <msimacek@redhat.com>2015-09-22 10:29:32 +0200
committerJan Cholasta <jcholast@redhat.com>2016-02-17 10:41:29 +0100
commit831856ea55abb11139114c4c74563a13b6a1b6cf (patch)
tree2a54873a03f16527bf4243396cf381d157c04a4e
parent91e5435c8b56e9e711e20e4173fb068ff131a4d6 (diff)
downloadfreeipa-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.py14
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))