Validate $ROOT inside the --resume merge list in order to avoid a pottential
[portage.git] / pym / _emerge / __init__.py
index f6ef588b2f7fe1dff5b56f6a95f206e53f9e1d24..8126ae7b3094579d0cf8075319176324ebb2c81a 100644 (file)
@@ -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]