skip very big files (50M) in zip tar and rar extractors

This commit is contained in:
Jean-Francois Dockes 2012-10-04 08:22:33 +02:00
parent 2bb14cc6ff
commit b321b0babb
3 changed files with 25 additions and 4 deletions

View File

@ -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)

View File

@ -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

View File

@ -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: