]> git.decadent.org.uk Git - dak.git/commitdiff
fix gpg_get_key_addresses
authorHelmut Grohne <helmut@subdivi.de>
Mon, 26 May 2014 05:47:07 +0000 (07:47 +0200)
committerHelmut Grohne <helmut@subdivi.de>
Mon, 26 May 2014 05:47:07 +0000 (07:47 +0200)
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

index 30683097b57d7b61d666e5115b6f01f50739cd9a..3ae8d289cd14c84d3abee8b355849fb01d4fa64e 100644 (file)
@@ -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)