summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorMarius Mauch <genone@gentoo.org>2007-02-06 09:28:54 +0000
committerMarius Mauch <genone@gentoo.org>2007-02-06 09:28:54 +0000
commit74a1a2b6c902704448bdfc8e961e82d14c31cea3 (patch)
treef5807e20a450374aa0811b25d36d24065b6b384a /pym
parent2c2c1002597f1e337227e6cfab74657fd57504df (diff)
downloadportage-74a1a2b6c902704448bdfc8e961e82d14c31cea3.tar.gz
portage-74a1a2b6c902704448bdfc8e961e82d14c31cea3.tar.bz2
portage-74a1a2b6c902704448bdfc8e961e82d14c31cea3.zip
Check if entries contain the required hashes before writing the Manifest
svn path=/main/trunk/; revision=5902
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/manifest.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/pym/portage/manifest.py b/pym/portage/manifest.py
index 92b5b8e85..08ac13932 100644
--- a/pym/portage/manifest.py
+++ b/pym/portage/manifest.py
@@ -6,7 +6,7 @@ import errno, os, sets
if not hasattr(__builtins__, "set"):
from sets import Set as set
-import portage.exception, portage.versions, portage.const
+import portage.versions, portage.const
from portage.checksum import *
from portage.exception import *
from portage.util import write_atomic
@@ -341,8 +341,15 @@ class Manifest(object):
except FileNotFound:
pass
+ def checkIntegrity(self):
+ for t in self.fhashdict.keys():
+ for f in self.fhashdict[t]:
+ if not portage.const.MANIFEST2_REQUIRED_HASH in self.fhashdict[t][f].keys():
+ raise MissingParameter("Missing %s checksum: %s %s" % (portage.const.MANIFEST2_REQUIRED_HASH, t, f))
+
def write(self, sign=False, force=False):
""" Write Manifest instance to disk, optionally signing it """
+ self.checkIntegrity()
try:
if self.compat:
self._writeDigests()
@@ -478,7 +485,8 @@ class Manifest(object):
(assumeDistHashesAlways and mystat is None) or \
(assumeDistHashesAlways and mystat is not None and \
len(distfilehashes[f]) == len(self.hashes) and \
- distfilehashes[f]["size"] == mystat.st_size)):
+ distfilehashes[f]["size"] == mystat.st_size)) and \
+ portage.const.MANIFEST2_REQUIRED_HASH in distfilehashes[f].keys():
self.fhashdict["DIST"][f] = distfilehashes[f]
else:
try: