[dak/master] fix gpg_get_key_addresses
Do not use codecs.decode(s, "unicode_escape"). It has two issues:
* When being passed a bytes literal, the returned value becomes a str
and the decoding operation is locale specific on Python3.
* When passing a unicode literal, it implicitly encodes to
sys.getdefaultencoding() (locale specific) on Python2.
Thus "unicode_escape" is a bad choice in all cases.
For Python2 string_escape works with str, but it hinders a potential
Python3 port of dak. Use it now, because Python3 is totally broken.
---
daklib/utils.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/daklib/utils.py b/daklib/utils.py
index 3068309..3ae8d28 100644
--- a/daklib/utils.py
+++ b/daklib/utils.py
@@ -1381,7 +1381,8 @@ def gpg_get_key_addresses(fingerprint):
except IndexError:
continue
try:
- uid = codecs.decode(uid.decode("utf-8"), "unicode_escape")
+ # Do not use unicode_escape, because it is locale-specific
+ uid = codecs.decode(uid, "string_escape").decode("utf-8")
except UnicodeDecodeError:
uid = uid.decode("latin1") # does not fail
m = re_parse_maintainer.match(uid)
--
1.7.10.4
Reply to: