From 74a1a2b6c902704448bdfc8e961e82d14c31cea3 Mon Sep 17 00:00:00 2001 From: Marius Mauch Date: Tue, 6 Feb 2007 09:28:54 +0000 Subject: Check if entries contain the required hashes before writing the Manifest svn path=/main/trunk/; revision=5902 --- pym/portage/manifest.py | 12 ++++++++++-- 1 file 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: -- cgit v1.2.3-1-g7c22