summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-12-06 05:36:06 +0000
committerZac Medico <zmedico@gentoo.org>2008-12-06 05:36:06 +0000
commitc29f452775c69506138a5227a8b42c2fc552b646 (patch)
tree34ee688ffc866381d5cc31d7aa88936993d88b9d /pym/_emerge
parent56e3c19c4d9ae64b62688ad7973eb1572bc95ea4 (diff)
downloadportage-c29f452775c69506138a5227a8b42c2fc552b646.tar.gz
portage-c29f452775c69506138a5227a8b42c2fc552b646.tar.bz2
portage-c29f452775c69506138a5227a8b42c2fc552b646.zip
Validate $ROOT inside the --resume merge list in order to avoid a pottential
KeyError due to a stale merge list that was for a different $ROOT setting. Thanks to Ned Ludd <solar@g.o> for reporting. (trunk r12166) svn path=/main/branches/2.1.6/; revision=12167
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index f6ef588b2..8126ae7b3 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -12783,6 +12783,18 @@ def action_build(settings, trees, mtimedb,
if not isinstance(mergelist, list):
del mtimedb[k]
continue
+ for x in mergelist:
+ if not (isinstance(x, list) and len(x) == 4):
+ continue
+ pkg_type, pkg_root, pkg_key, pkg_action = x
+ if pkg_root not in trees:
+ # Current $ROOT setting differs,
+ # so the list must be stale.
+ mergelist = None
+ break
+ if not mergelist:
+ del mtimedb[k]
+ continue
resume_opts = resume_data.get("myopts")
if not isinstance(resume_opts, (dict, list)):
del mtimedb[k]