summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-09-11 21:56:39 -0700
committerZac Medico <zmedico@gentoo.org>2012-09-11 21:56:39 -0700
commit5614fa2d7cef0b509136fd00c52a8436d41a3647 (patch)
treed8a8b5ab79706b6ae27b0781b0a355d021bcbd76
parent62f4f330fc5ed840eba9d32da353afe789e2805b (diff)
downloadportage-5614fa2d7cef0b509136fd00c52a8436d41a3647.tar.gz
portage-5614fa2d7cef0b509136fd00c52a8436d41a3647.tar.bz2
portage-5614fa2d7cef0b509136fd00c52a8436d41a3647.zip
make_herd_base: encode unicode file paths safely
This will fix cases similar to the one fixed in commit f01d7a8ca158ec60df76a3e8ae5b80ac3f62429e for bug #310789.
-rw-r--r--pym/repoman/herdbase.py5
1 files changed, 4 insertions, 1 deletions
diff --git a/pym/repoman/herdbase.py b/pym/repoman/herdbase.py
index fcf58b36c..4c420d0ec 100644
--- a/pym/repoman/herdbase.py
+++ b/pym/repoman/herdbase.py
@@ -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: