summaryrefslogtreecommitdiff
path: root/lib/archive.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/archive.py')
-rw-r--r--lib/archive.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/archive.py b/lib/archive.py
index 108134c..5956a1e 100644
--- a/lib/archive.py
+++ b/lib/archive.py
@@ -1,9 +1,8 @@
1''' 1'''
2 Take care of archives formats 2 Take care of archives formats
3''' 3'''
4import tarfile
5import zipfile
6 4
5import zipfile
7import shutil 6import shutil
8import os 7import os
9import logging 8import logging
@@ -11,7 +10,7 @@ import tempfile
11 10
12import parser 11import parser
13import mat 12import mat
14 13import tarfile
15 14
16class GenericArchiveStripper(parser.GenericParser): 15class GenericArchiveStripper(parser.GenericParser):
17 ''' 16 '''
@@ -224,6 +223,7 @@ class TarStripper(GenericArchiveStripper):
224 tarin = tarfile.open(self.filename, 'r' + self.compression) 223 tarin = tarfile.open(self.filename, 'r' + self.compression)
225 for item in tarin.getmembers(): 224 for item in tarin.getmembers():
226 if not self.is_file_clean(item): 225 if not self.is_file_clean(item):
226 tarin.close()
227 return False 227 return False
228 tarin.extract(item, self.tempdir) 228 tarin.extract(item, self.tempdir)
229 name = os.path.join(self.tempdir, item.name) 229 name = os.path.join(self.tempdir, item.name)
@@ -233,12 +233,14 @@ class TarStripper(GenericArchiveStripper):
233 class_file = mat.create_class_file(name, 233 class_file = mat.create_class_file(name,
234 False, self.add2archive) 234 False, self.add2archive)
235 if not class_file.is_clean(): 235 if not class_file.is_clean():
236 tarin.close()
236 return False 237 return False
237 except: 238 except:
238 #best solution I have found 239 #best solution I have found
239 logging.error('%s is not supported' % item.filename) 240 logging.error('%s is not supported' % item.filename)
240 _, ext = os.path.splitext(name) 241 _, ext = os.path.splitext(name)
241 if ext not in parser.NOMETA: 242 if ext not in parser.NOMETA:
243 tarin.close()
242 return False 244 return False
243 mat.secure_remove(name) 245 mat.secure_remove(name)
244 tarin.close() 246 tarin.close()