make_herd_base: encode unicode file paths safely
authorZac Medico <zmedico@gentoo.org>
Wed, 12 Sep 2012 04:56:39 +0000 (21:56 -0700)
committerZac Medico <zmedico@gentoo.org>
Wed, 12 Sep 2012 04:56:39 +0000 (21:56 -0700)
This will fix cases similar to the one fixed in commit
f01d7a8ca158ec60df76a3e8ae5b80ac3f62429e for bug #310789.

pym/repoman/herdbase.py

index fcf58b36cf05bb559a11825518a347d2a8bde69e..4c420d0ec26efbc11562afadf2413f75898acbef 100644 (file)
@@ -17,6 +17,8 @@ except (ImportError, SystemError, RuntimeError, Exception):
        # modules, so that ImportModulesTestCase can succeed (or
        # possibly alert us about unexpected import failures).
        pass
+
+from portage import _encodings, _unicode_encode
 from portage.exception import FileNotFound, ParseError, PermissionDenied
 
 __all__ = [
@@ -56,7 +58,8 @@ def make_herd_base(filename):
        all_emails = set()
 
        try:
-               xml_tree = xml.etree.ElementTree.parse(filename,
+               xml_tree = xml.etree.ElementTree.parse(_unicode_encode(filename,
+                               encoding=_encodings['fs'], errors='strict'),
                        parser=xml.etree.ElementTree.XMLParser(
                                target=_HerdsTreeBuilder()))
        except ExpatError as e: