dev-python/pyldap: Backport patch for bytes/string conversion problem

Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=562854

Package-Manager: portage-2.2.23
Signed-off-by: Justin Lecher <jlec@gentoo.org>
This commit is contained in:
Justin Lecher
2015-10-14 16:05:34 +02:00
parent d41ec6c1d4
commit 1009299d11
4 changed files with 129 additions and 1 deletions

View File

@@ -0,0 +1,49 @@
From 6e9e1902f33bff8ea179dc32ce4d2aa71b3335de Mon Sep 17 00:00:00 2001
From: Petr Viktorin <pviktori@redhat.com>
Date: Fri, 2 Oct 2015 14:06:12 +0200
Subject: [PATCH] Fix sasl string/bytes mismatch
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The SASL mechanism and response are always bytes; encode them if necessary.
Based on patch by Michael Šimáček: https://github.com/pyldap/pyldap/pull/20
---
Lib/ldap/sasl.py | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/Lib/ldap/sasl.py b/Lib/ldap/sasl.py
index 1158671..de38393 100644
--- a/Lib/ldap/sasl.py
+++ b/Lib/ldap/sasl.py
@@ -46,6 +46,8 @@ def __init__(self,cb_value_dict,mech):
SASL callback id's. The mech argument is a string that specifies
the SASL mechaninsm to be uesd."""
self.cb_value_dict = cb_value_dict or {}
+ if not isinstance(mech, bytes):
+ mech = mech.encode('utf-8')
self.mech = mech
def callback(self,cb_id,challenge,prompt,defresult):
@@ -62,7 +64,10 @@ def callback(self,cb_id,challenge,prompt,defresult):
cb_value_dictionary. Note that the current callback interface is not very
useful for writing generic sasl GUIs, which would need to know all
the questions to ask, before the answers are returned to the sasl
- lib (in contrast to one question at a time)."""
+ lib (in contrast to one question at a time).
+
+ Unicode strings are always converted to bytes.
+ """
# The following print command might be useful for debugging
# new sasl mechanisms. So it is left here
@@ -72,6 +77,8 @@ def callback(self,cb_id,challenge,prompt,defresult):
_trace_file.write("*** id=%d, challenge=%s, prompt=%s, defresult=%s\n-> %s\n" % (
cb_id, challenge, prompt, repr(defresult), repr(self.cb_value_dict.get(cb_result))
))
+ if not isinstance(cb_result, bytes):
+ cb_result = cb_result.encode('utf-8')
return cb_result