Do more validation of resume data from the mtimedb.
authorZac Medico <zmedico@gentoo.org>
Sun, 4 May 2008 06:39:58 +0000 (06:39 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 4 May 2008 06:39:58 +0000 (06:39 -0000)
svn path=/main/trunk/; revision=10165

pym/_emerge/__init__.py

index 96158c8c627a4110670e87bc5ce3dd9f8b9277d1..0042a6072825be71224c4bcc5ace15348502caf6 100644 (file)
@@ -7743,12 +7743,24 @@ def action_build(settings, trees, mtimedb,
        # validate the state of the resume data
        # so that we can make assumptions later.
        for k in ("resume", "resume_backup"):
-               if k in mtimedb:
-                       if "mergelist" in mtimedb[k]:
-                               if not mtimedb[k]["mergelist"]:
-                                       del mtimedb[k]
-                       else:
-                               del mtimedb[k]
+               if k not in mtimedb:
+                       continue
+               resume_data = mtimedb[k]
+               if not isinstance(resume_data, dict):
+                       del mtimedb[k]
+                       continue
+               mergelist = resume_data.get("mergelist")
+               if not isinstance(mergelist, list):
+                       del mtimedb[k]
+                       continue
+               resume_opts = resume_data.get("myopts")
+               if not isinstance(resume_opts, (dict, list)):
+                       del mtimedb[k]
+                       continue
+               favorites = resume_data.get("favorites")
+               if not isinstance(resume_opts, list):
+                       del mtimedb[k]
+                       continue
 
        resume = False
        if "--resume" in myopts and \