diff --git a/src/filters/rclrar b/src/filters/rclrar index 19f045f1..970442c1 100755 --- a/src/filters/rclrar +++ b/src/filters/rclrar @@ -49,7 +49,12 @@ class RarExtractor: if not isdir: try: - docdata = self.rar.read(ipath) + if rarinfo.file_size > 50 * 1024 * 1024: + self.em.rclog("extractone: entry %s size %d too big" % + (ipath, rarinfo.file_size)) + docdata = "" + else: + docdata = self.rar.read(ipath) ok = True except Exception, err: self.em.rclog("extractone: failed: [%s]" % err) diff --git a/src/filters/rcltar b/src/filters/rcltar index 3008d304..cb2dec27 100755 --- a/src/filters/rcltar +++ b/src/filters/rcltar @@ -23,7 +23,15 @@ class TarExtractor: def extractone(self, ipath): docdata = "" try: - docdata = self.tar.extractfile(ipath).read() + info = self.tar.getmember(ipath) + if info.size > 50 * 1024 * 1024: + # skip + docdata = "" + self.em.rclog("extractone: entry %s size %d too big" % + (ipath, info.size)) + docdata = "" # raise TarError("Member too big") + else: + docdata = self.tar.extractfile(ipath).read() ok = True except Exception, err: ok = False diff --git a/src/filters/rclzip b/src/filters/rclzip index 3b29d8e1..0e8311dd 100755 --- a/src/filters/rclzip +++ b/src/filters/rclzip @@ -45,10 +45,18 @@ class ZipExtractor: #self.em.rclog("extractone: [%s]" % ipath) docdata = "" try: - docdata = self.zip.read(ipath) + info = self.zip.getinfo(ipath) + # There could be a 4GB Iso in the zip. We have to set a limit + if info.file_size > 50 * 1024*1024: + self.em.rclog("extractone: entry %s size %d too big" % + (ipath, info.file_size)) + docdata = "" + #raise BadZipfile() + else: + docdata = self.zip.read(ipath) ok = True except Exception, err: -# self.em.rclog("extractone: failed: [%s]" % err) + self.em.rclog("extractone: failed: [%s]" % err) ok = False iseof = rclexecm.RclExecM.noteof if self.currentindex >= len(self.zip.namelist()) -1: