11 from fnmatch import fnmatchcase as matches
12 from cStringIO import StringIO
14 logg = logging.getLogger("test")
17 testdatadir = "testdata.d"
23 def shell_string(command):
24 return " ".join(["'%s'" % arg.replace("'","\\'") for arg in command])
26 def shell(command, shell=True, calls=False, cwd=None, env=None, lang=None, returncodes=None):
27 returncodes = returncodes or [ None, 0 ]
28 Shell = collections.namedtuple("Shell",["returncode", "output", "errors", "shell"])
29 if isinstance(command, basestring):
33 sh_command = shell_string(command)
35 env = os.environ.copy()
37 for name, value in env.items():
38 if name.startswith("LC_"):
40 env["LANG"] = lang # defines message format
41 env["LC_ALL"] = lang # other locale formats
42 build_libs = os.path.dirname(os.path.dirname(os.path.realpath(command[0])))+"/zzip/.libs"
43 if os.path.isdir(build_libs):
44 env["LD_LIBRARY_PATH"] = build_libs
46 output, errors = "", ""
48 logg.debug("result from %s: %s", cwd and cwd+"/" or "shell", sh_command)
49 run = subprocess.Popen(command, shell=shell, cwd=cwd, env=env)
51 logg.warning("EXIT %s: %s", run.returncode, command)
54 logg.debug("output from %s: %s", cwd and cwd+"/" or "shell", sh_command)
55 run = subprocess.Popen(command, shell=shell, cwd=cwd,
56 stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=None, env=env)
58 logg.warning("EXIT %s: %s", run.returncode, command)
59 output, errors = run.communicate() # run.wait()
61 logg.error("*E*: %s", sh_command)
62 for line in output.split("\n"):
64 logg.error("OUT: %s", line)
65 for line in errors.split("\n"):
67 logg.error("ERR: %s", line)
69 if run.returncode not in returncodes:
70 logg.warning("*%02i: %s", run.returncode, sh_command)
71 for line in output.split("\n"):
73 logg.warning("OUT: %s", line)
74 for line in errors.split("\n"):
76 logg.warning("ERR: %s", line)
77 raise subprocess.CalledProcessError(run.returncode, sh_command, output)
79 for line in output.split("\n"):
81 logg.debug("OUT: %s", line)
82 for line in errors.split("\n"):
84 logg.debug("ERR: %s", line)
85 return Shell(run.returncode, output, errors, sh_command)
87 def get_caller_name():
88 frame = inspect.currentframe().f_back.f_back
89 return frame.f_code.co_name
90 def get_caller_caller_name():
91 frame = inspect.currentframe().f_back.f_back.f_back
92 return frame.f_code.co_name
94 def download(base_url, filename, into):
96 if not os.path.isdir(data):
98 subname = urllib.quote_plus(base_url)
99 subdir = os.path.join(data, subname)
100 if not os.path.isdir(subdir):
102 subfile = os.path.join(subdir, filename)
103 if not os.path.exists(subfile):
104 logg.info("need %s", subfile)
105 d = urllib.urlopen(base_url + "/" + filename)
106 f = open(subfile, "w")
110 if not os.path.isdir(into):
112 shutil.copy(subfile, into)
115 def output(cmd, shell=True):
116 run = subprocess.Popen(cmd, shell=shell, stdout=subprocess.PIPE)
117 out, err = run.communicate()
119 def grep(pattern, lines):
120 if isinstance(lines, basestring):
121 lines = lines.split("\n")
123 if re.search(pattern, line.rstrip()):
125 def greps(lines, pattern):
126 return list(grep(pattern, lines))
127 def all_errors(lines):
128 if isinstance(lines, basestring):
129 lines = lines.split("\n")
139 return list(all_errors(lines))
141 class ZZipTest(unittest.TestCase):
144 if not os.path.isdir(testdatadir):
145 os.makedirs(testdatadir)
151 return os.path.join(self.s, name)
153 f = open(self.src(readme))
157 def mkfile(self, name, content):
158 b = os.path.dirname(name)
159 if not os.path.isdir(b):
164 def bins(self, name):
165 if name == "unzip": return unzip
166 if name == "mkzip": return mkzip
167 exe = os.path.join("..", "bins", name)
168 if exeext: exe += exeext
170 def gentext(self, size):
171 random.seed(1234567891234567890)
175 for i in xrange(size):
177 x = random.choice(" abcdefghijklmnopqrstuvwxyz\n")
178 if x == old1 or x == old2: continue
183 return result.getvalue()
184 def caller_testname(self):
185 name = get_caller_caller_name()
187 if x1 < 0: return name
188 x2 = name.find("_", x1+1)
189 if x2 < 0: return name
191 def testname(self, suffix = None):
192 name = self.caller_testname()
194 return name + "_" + suffix
196 def testzip(self, testname = None):
197 testname = testname or self.caller_testname()
198 zipname = testname + ".zip"
200 def testdir(self, testname = None):
201 testname = testname or self.caller_testname()
202 newdir = "tmp."+testname
203 if os.path.isdir(newdir):
204 shutil.rmtree(newdir)
207 def rm_testdir(self, testname = None):
208 testname = testname or self.caller_testname()
209 newdir = "tmp."+testname
210 if os.path.isdir(newdir):
211 shutil.rmtree(newdir)
213 def rm_testzip(self, testname = None):
214 testname = testname or self.caller_testname()
215 zipname = testname + ".zip"
216 if os.path.exists(zipname):
219 ################################################################
220 def test_1000_make_test0_zip(self):
221 """ create a test.zip for later tests using standard 'zip'
222 It will fall back to a variant in the source code if 'zip'
223 is not installed on the build host. The content is just
224 the README file that we can check for equality later on. """
227 exe=self.bins("mkzip")
228 filename = os.path.join(tmpdir,"README")
229 filetext = self.readme()
230 self.mkfile(filename, filetext)
231 shell("{exe} ../{zipfile} README".format(**locals()), cwd=tmpdir)
232 self.assertGreater(os.path.getsize(zipfile), 10)
233 def test_10001_make_test1_zip(self):
234 """ create a test1.zip for later tests using standard 'zip'
235 It will fall back to a variant in the source code if 'zip'
236 is not installed on the build host. The archive has 10
237 generic files that we can check for their content later. """
240 exe=self.bins("mkzip")
241 for i in [1,2,3,4,5,6,7,8,9]:
242 filename = os.path.join(tmpdir,"file.%i" % i)
243 filetext = "file-%i\n" % i
244 self.mkfile(filename, filetext)
245 filename = os.path.join(tmpdir,"README")
246 filetext = self.readme()
247 self.mkfile(filename, filetext)
248 shell("{exe} ../{zipfile} ??*.* README".format(**locals()), cwd=tmpdir)
249 self.assertGreater(os.path.getsize(zipfile), 10)
250 def test_10002_make_test2_zip(self):
251 """ create a test2.zip for later tests using standard 'zip'
252 It will NOT fall back to a variant in the source code.
253 The archive has 100 generic files with known content. """
256 exe=self.bins("mkzip")
257 for i in xrange(100):
258 filename = os.path.join(tmpdir,"file.%02i" % i)
259 filetext = "file-%02i\n" % i
260 self.mkfile(filename, filetext)
261 filename = os.path.join(tmpdir,"README")
262 filetext = self.readme()
263 self.mkfile(filename, filetext)
264 shell("{exe} ../{zipfile} ??*.* README".format(**locals()), cwd=tmpdir)
265 self.assertGreater(os.path.getsize(zipfile), 10)
266 def test_10003_make_test3_zip(self):
267 """ create a test3.zip for later tests using standard 'zip'
268 It will NOT fall back to a variant in the source code.
269 The archive has 1000 generic files with known content. """
272 exe=self.bins("mkzip")
273 for i in xrange(1000):
274 filename = os.path.join(tmpdir,"file.%03i" % i)
275 filetext = "file-%03i\n" % i
276 self.mkfile(filename, filetext)
277 filename = os.path.join(tmpdir,"README")
278 filetext = self.readme()
279 self.mkfile(filename, filetext)
280 shell("{exe} ../{zipfile} ??*.* README".format(**locals()), cwd=tmpdir)
281 self.assertGreater(os.path.getsize(zipfile), 10)
282 def test_10004_make_test4_zip(self):
283 """ create a test4.zip for later tests using standard 'zip'
284 It will NOT fall back to a variant in the source code.
285 The archive has 10000 generic files with known content
286 and they are stored (NOT compressed) in the archive. """
289 exe=self.bins("mkzip")
290 for i in xrange(10000):
291 filename = os.path.join(tmpdir,"file%04i.txt" % i)
292 filetext = "file-%04i\n" % i
293 self.mkfile(filename, filetext)
294 filename = os.path.join(tmpdir,"README")
295 filetext = self.readme()
296 self.mkfile(filename, filetext)
297 shell("{exe} -n README ../{zipfile} ??*.* README".format(**locals()), cwd=tmpdir)
298 self.assertGreater(os.path.getsize(zipfile), 1000000)
299 def test_10005_make_test5_zip(self):
300 """ create a test5.zip for later tests using standard 'zip'
301 It will NOT fall back to a variant in the source code.
302 The archive has files at multiple subdirectories depth
303 and of varying sizes each. """
306 exe=self.bins("mkzip")
307 for depth in xrange(20):
309 for i in xrange(depth):
311 dirpath += "subdir%i/" % i
312 for size in xrange(18):
314 filetext = self.gentext(size)
315 filepart = "file%i-%i.txt" % (depth, size)
316 filename = os.path.join(tmpdir, dirpath + filepart )
317 self.mkfile(filename, filetext)
318 filename = os.path.join(tmpdir,"README")
319 filetext = self.readme()
320 self.mkfile(filename, filetext)
321 shell("{exe} ../{zipfile} -r file* subdir* README".format(**locals()), cwd=tmpdir)
322 self.assertGreater(os.path.getsize(zipfile), 1000000)
323 def test_10010_make_test0_dat(self):
324 """ create test.dat from test.zip with xorcopy """
325 zipfile = "test0.zip"
326 datfile = "test0x.dat"
327 exe = self.bins("zzxorcopy")
328 shell("{exe} {zipfile} {datfile}".format(**locals()))
329 self.assertGreater(os.path.getsize(datfile), 10)
330 self.assertEqual(os.path.getsize(datfile), os.path.getsize(zipfile))
331 def test_10011_make_test1_dat(self):
332 """ create test.dat from test.zip with xorcopy """
333 zipfile = "test1.zip"
334 datfile = "test1x.dat"
335 exe = self.bins("zzxorcopy")
336 shell("{exe} {zipfile} {datfile}".format(**locals()))
337 self.assertGreater(os.path.getsize(datfile), 10)
338 self.assertEqual(os.path.getsize(datfile), os.path.getsize(zipfile))
339 def test_10012_make_test2_dat(self):
340 """ create test.dat from test.zip with xorcopy """
341 zipfile = "test2.zip"
342 datfile = "test2x.dat"
343 exe = self.bins("zzxorcopy")
344 shell("{exe} {zipfile} {datfile}".format(**locals()))
345 self.assertGreater(os.path.getsize(datfile), 10)
346 self.assertEqual(os.path.getsize(datfile), os.path.getsize(zipfile))
347 def test_10013_make_test3_dat(self):
348 """ create test.dat from test.zip with xorcopy """
349 zipfile = "test3.zip"
350 datfile = "test3x.dat"
351 exe = self.bins("zzxorcopy")
352 shell("{exe} {zipfile} {datfile}".format(**locals()))
353 self.assertGreater(os.path.getsize(datfile), 10)
354 self.assertEqual(os.path.getsize(datfile), os.path.getsize(zipfile))
355 def test_10014_make_test4_dat(self):
356 """ create test.dat from test.zip with xorcopy """
357 zipfile = "test4.zip"
358 datfile = "test4x.dat"
359 exe = self.bins("zzxorcopy")
360 shell("{exe} {zipfile} {datfile}".format(**locals()))
361 self.assertGreater(os.path.getsize(datfile), 10)
362 self.assertEqual(os.path.getsize(datfile), os.path.getsize(zipfile))
363 def test_20000_zziptest_test0_zip(self):
364 """ run zziptest on test.zip """
365 zipfile = "test0.zip"
366 logfile = "test0.log"
367 exe = self.bins("zziptest")
368 shell("{exe} --quick {zipfile} | tee {logfile}".format(**locals()))
369 self.assertGreater(os.path.getsize(logfile), 10)
370 def test_20001_zziptest_test1_zip(self):
371 """ run zziptest on test.zip """
372 zipfile = "test1.zip"
373 logfile = "test1.log"
374 exe = self.bins("zziptest")
375 shell("{exe} --quick {zipfile} | tee {logfile}".format(**locals()))
376 self.assertGreater(os.path.getsize(logfile), 10)
377 def test_20002_zziptest_test2_zip(self):
378 """ run zziptest on test.zip """
379 zipfile = "test2.zip"
380 logfile = "test2.log"
381 exe = self.bins("zziptest")
382 shell("{exe} --quick {zipfile} | tee {logfile}".format(**locals()))
383 self.assertGreater(os.path.getsize(logfile), 10)
384 def test_20003_zziptest_test3_zip(self):
385 """ run zziptest on test.zip """
386 zipfile = "test3.zip"
387 logfile = "test3.log"
388 exe = self.bins("zziptest")
389 shell("{exe} --quick {zipfile} | tee {logfile}".format(**locals()))
390 self.assertGreater(os.path.getsize(logfile), 10)
391 def test_20004_zziptest_test4_zip(self):
392 """ run zziptest on test.zip """
393 zipfile = "test4.zip"
394 logfile = "test4.log"
395 exe = self.bins("zziptest")
396 shell("{exe} --quick {zipfile} | tee {logfile}".format(**locals()))
397 self.assertGreater(os.path.getsize(logfile), 10)
398 def test_20010_zzcat_test0_zip(self):
399 """ run zzcat on test.zip using just test/README """
400 zipfile = "test0.zip"
401 getfile = "test0/README"
402 logfile = "test0.readme.txt"
403 exe = self.bins("zzcat")
404 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
405 self.assertGreater(os.path.getsize(logfile), 10)
406 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
407 def test_20011_zzcat_test1_zip(self):
408 """ run zzcat on test.zip using just test/README """
409 zipfile = "test1.zip"
410 getfile = "test1/README"
411 logfile = "test1.readme.txt"
412 exe = self.bins("zzcat")
413 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
414 self.assertGreater(os.path.getsize(logfile), 10)
415 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
416 getfile = "test1/file.1"
417 run = shell("{exe} {getfile}".format(**locals()))
418 self.assertEqual("file-1\n", run.output)
419 def test_20012_zzcat_test2_zip(self):
420 """ run zzcat on test.zip using just test/README """
421 zipfile = "test2.zip"
422 getfile = "test2/README"
423 logfile = "test2.readme.txt"
424 exe = self.bins("zzcat")
425 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
426 self.assertGreater(os.path.getsize(logfile), 10)
427 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
428 getfile = "test2/file.22"
429 run = shell("{exe} {getfile}".format(**locals()))
430 self.assertEqual("file-22\n", run.output)
431 def test_20013_zzcat_test3_zip(self):
432 """ run zzcat on test.zip using just test/README """
433 zipfile = "test3.zip"
434 getfile = "test3/README"
435 logfile = "test3.readme.txt"
436 exe = self.bins("zzcat")
437 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
438 self.assertGreater(os.path.getsize(logfile), 10)
439 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
440 getfile = "test3/file.999"
441 run = shell("{exe} {getfile}".format(**locals()))
442 self.assertEqual("file-999\n", run.output)
443 def test_20014_zzcat_test4_zip(self):
444 """ run zzcat on test.zip using just test/README """
445 zipfile = "test4.zip"
446 getfile = "test4/README"
447 logfile = "test4.readme.txt"
448 exe = self.bins("zzcat")
449 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
450 self.assertGreater(os.path.getsize(logfile), 10)
451 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
452 getfile = "test4/file9999.txt"
453 run = shell("{exe} {getfile}".format(**locals()))
454 self.assertEqual("file-9999\n", run.output)
455 def test_20020_zzdir_test0_zip(self):
456 """ run zzdir on test0.zip using just 'test0' """
457 zipfile = "test0.zip"
459 exe = self.bins("zzdir")
460 run = shell("{exe} {getfile} ".format(**locals()))
461 self.assertIn(' README\n', run.output)
462 self.assertIn(' defl:N ', run.output)
463 self.assertLess(len(run.output), 30)
464 def test_20021_zzdir_test1_zip(self):
465 """ run zzdir on test1.zip using just 'test1' """
466 zipfile = "test1.zip"
468 exe = self.bins("zzdir")
469 run = shell("{exe} {getfile} ".format(**locals()))
470 self.assertIn(' file.1\n', run.output)
471 self.assertIn(' file.2\n', run.output)
472 self.assertIn(' file.9\n', run.output)
473 self.assertIn(' README\n', run.output)
474 self.assertIn(' defl:N ', run.output)
475 self.assertIn(' stored ', run.output)
476 def test_20022_zzdir_test2_zip(self):
477 """ run zzdir on test2.zip using just 'test2' """
478 zipfile = "test2.zip"
480 exe = self.bins("zzdir")
481 run = shell("{exe} {getfile} ".format(**locals()))
482 self.assertIn(' file.01\n', run.output)
483 self.assertIn(' file.22\n', run.output)
484 self.assertIn(' file.99\n', run.output)
485 self.assertIn(' defl:N ', run.output)
486 self.assertIn(' stored ', run.output)
487 def test_20023_zzdir_test3_zip(self):
488 """ run zzdir on test3.zip using just 'test3' """
489 zipfile = "test3.zip"
491 exe = self.bins("zzdir")
492 run = shell("{exe} {getfile} ".format(**locals()))
493 self.assertIn(' file.001\n', run.output)
494 self.assertIn(' file.222\n', run.output)
495 self.assertIn(' file.999\n', run.output)
496 self.assertIn(' defl:N ', run.output)
497 self.assertIn(' stored ', run.output)
498 def test_20024_zzdir_test4_zip(self):
499 """ run zzdir on test4.zip using just 'test4' """
500 zipfile = "test4.zip"
502 exe = self.bins("zzdir")
503 run = shell("{exe} {getfile} ".format(**locals()))
504 self.assertIn(' file0001.txt\n', run.output)
505 self.assertIn(' file2222.txt\n', run.output)
506 self.assertIn(' file9999.txt\n', run.output)
507 self.assertNotIn(' defl:N ', run.output)
508 self.assertIn(' stored ', run.output)
509 def test_20320_zzxordir_test0_dat(self):
510 """ run zzxordir on test0x.dat """
511 zipfile = "test0x.dat"
512 getfile = "test0x.dat"
513 exe = self.bins("zzdir")
514 run = shell("{exe} {getfile} ".format(**locals()), returncodes = [0,1])
515 self.assertEqual(run.returncode, 1)
516 self.assertEqual("", run.output)
517 self.assertIn("did not open test", run.errors)
518 exe = self.bins("zzxordir")
519 run = shell("{exe} {getfile} ".format(**locals()))
520 self.assertIn(' README\n', run.output)
521 self.assertIn(' defl:N ', run.output)
522 self.assertLess(len(run.output), 30)
523 def test_20321_zzxordir_test1_dat(self):
524 """ run zzxordir on test1x.dat using just 'test1x' """
525 zipfile = "test1x.dat"
526 getfile = "test1x.dat"
527 exe = self.bins("zzdir")
528 run = shell("{exe} {getfile} ".format(**locals()), returncodes = [0,1])
529 self.assertEqual(run.returncode, 1)
530 self.assertEqual("", run.output)
531 self.assertIn("did not open test", run.errors)
532 exe = self.bins("zzxordir")
533 run = shell("{exe} {getfile} ".format(**locals()))
534 self.assertIn(' file.1\n', run.output)
535 self.assertIn(' file.2\n', run.output)
536 self.assertIn(' file.9\n', run.output)
537 self.assertIn(' README\n', run.output)
538 self.assertIn(' defl:N ', run.output)
539 self.assertIn(' stored ', run.output)
540 def test_20322_zzxordir_test2_dat(self):
541 """ run zzxordir on test2x.dat using just 'test2x' """
542 zipfile = "test2x.dat"
544 exe = self.bins("zzdir")
545 run = shell("{exe} {getfile} ".format(**locals()), returncodes = [0,1])
546 self.assertEqual(run.returncode, 1)
547 self.assertEqual("", run.output)
548 self.assertIn("did not open test", run.errors)
549 exe = self.bins("zzxordir")
550 run = shell("{exe} {getfile} ".format(**locals()))
551 self.assertIn(' file.01\n', run.output)
552 self.assertIn(' file.22\n', run.output)
553 self.assertIn(' file.99\n', run.output)
554 self.assertIn(' defl:N ', run.output)
555 self.assertIn(' stored ', run.output)
556 def test_20323_zzxordir_test3_dat(self):
557 """ run zzxordir on test3x.dat using just 'test3x' """
558 zipfile = "test3x.dat"
560 exe = self.bins("zzdir")
561 run = shell("{exe} {getfile} ".format(**locals()), returncodes = [0,1])
562 self.assertEqual(run.returncode, 1)
563 self.assertEqual("", run.output)
564 self.assertIn("did not open test", run.errors)
565 exe = self.bins("zzxordir")
566 run = shell("{exe} {getfile} ".format(**locals()))
567 self.assertIn(' file.001\n', run.output)
568 self.assertIn(' file.222\n', run.output)
569 self.assertIn(' file.999\n', run.output)
570 self.assertIn(' defl:N ', run.output)
571 self.assertIn(' stored ', run.output)
572 def test_20324_zzxordir_test4_zip(self):
573 """ run zzxordir on test4x.dat using just 'test4x' """
574 zipfile = "test4x.dat"
576 exe = self.bins("zzdir")
577 run = shell("{exe} {getfile} ".format(**locals()), returncodes = [0,1])
578 self.assertEqual(run.returncode, 1)
579 self.assertEqual("", run.output)
580 self.assertIn("did not open test", run.errors)
581 exe = self.bins("zzxordir")
582 run = shell("{exe} {getfile} ".format(**locals()))
583 self.assertIn(' file0001.txt\n', run.output)
584 self.assertIn(' file2222.txt\n', run.output)
585 self.assertIn(' file9999.txt\n', run.output)
586 self.assertNotIn(' defl:N ', run.output)
587 self.assertIn(' stored ', run.output)
588 def test_20340_zzxorcat_test0_zip(self):
589 """ run zzxorcat on testx.zip using just testx/README """
590 getfile = "test0x/README"
591 logfile = "test0x.readme.txt"
592 exe = self.bins("zzcat")
593 run = shell("{exe} {getfile} ".format(**locals()), lang="C")
594 self.assertEqual("", run.output)
595 self.assertIn("No such file or directory", run.errors)
596 exe = self.bins("zzxorcat")
597 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
598 self.assertGreater(os.path.getsize(logfile), 10)
599 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
600 def test_20341_zzxorcat_test1_zip(self):
601 """ run zzxorcat on testx.zip using just testx/README """
602 getfile = "test1x/README"
603 logfile = "test1x.readme.txt"
604 exe = self.bins("zzcat")
605 run = shell("{exe} {getfile} ".format(**locals()), lang="C")
606 self.assertEqual("", run.output)
607 self.assertIn("No such file or directory", run.errors)
608 exe = self.bins("zzxorcat")
609 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
610 self.assertGreater(os.path.getsize(logfile), 10)
611 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
612 getfile = "test1x/file.1"
613 run = shell("{exe} {getfile}".format(**locals()))
614 self.assertEqual("file-1\n", run.output)
615 def test_20342_zzxorcat_test2_zip(self):
616 """ run zzxorcat on testx.zip using just testx/README """
617 getfile = "test2x/README"
618 logfile = "test2x.readme.txt"
619 exe = self.bins("zzcat")
620 run = shell("{exe} {getfile} ".format(**locals()), lang="C")
621 self.assertEqual("", run.output)
622 self.assertIn("No such file or directory", run.errors)
623 exe = self.bins("zzxorcat")
624 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
625 self.assertGreater(os.path.getsize(logfile), 10)
626 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
627 getfile = "test2x/file.22"
628 run = shell("{exe} {getfile}".format(**locals()))
629 self.assertEqual("file-22\n", run.output)
630 def test_20343_zzxorcat_test3_zip(self):
631 """ run zzxorcat on testx.zip using just testx/README """
632 getfile = "test3x/README"
633 logfile = "test3x.readme.txt"
634 exe = self.bins("zzcat")
635 run = shell("{exe} {getfile} ".format(**locals()), lang="C")
636 self.assertEqual("", run.output)
637 self.assertIn("No such file or directory", run.errors)
638 exe = self.bins("zzxorcat")
639 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
640 self.assertGreater(os.path.getsize(logfile), 10)
641 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
642 getfile = "test3x/file.999"
643 run = shell("{exe} {getfile}".format(**locals()))
644 self.assertEqual("file-999\n", run.output)
645 def test_20344_zzxorcat_test4_zip(self):
646 """ run zzxorcat on testx.zip using just testx/README """
647 getfile = "test4x/README"
648 logfile = "test4x.readme.txt"
649 exe = self.bins("zzxorcat")
650 run = shell("{exe} {getfile} | tee {logfile}".format(**locals()))
651 self.assertGreater(os.path.getsize(logfile), 10)
652 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
653 getfile = "test4x/file9999.txt"
654 run = shell("{exe} {getfile}".format(**locals()))
655 self.assertEqual("file-9999\n", run.output)
656 #####################################################################
658 #####################################################################
659 def test_20400_infozip_cat_test0_zip(self):
660 """ run inzo-zip cat test.zip using just archive README """
661 zipfile = "test0.zip"
663 logfile = "test0.readme.pk.txt"
664 exe = self.bins("unzip")
665 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
666 self.assertGreater(os.path.getsize(logfile), 10)
667 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
668 def test_20401_infozip_cat_test1_zip(self):
669 """ run info-zip cat test.zip using just archive README """
670 zipfile = "test1.zip"
672 logfile = "test1.readme.pk.txt"
673 exe = self.bins("unzip")
674 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
675 self.assertGreater(os.path.getsize(logfile), 10)
676 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
678 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
679 self.assertEqual("file-1\n", run.output)
680 def test_20402_infozip_cat_test2_zip(self):
681 """ run info-zip cat test.zip using just archive README """
682 zipfile = "test2.zip"
684 logfile = "test2.readme.pk.txt"
685 exe = self.bins("unzip")
686 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
687 self.assertGreater(os.path.getsize(logfile), 10)
688 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
690 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
691 self.assertEqual("file-22\n", run.output)
692 def test_20405_zzcat_big_test5_zip(self):
693 """ run info-zip cat test.zip using archive README """
694 zipfile = "test5.zip"
696 logfile = "test5.readme.pk.txt"
697 exe = self.bins("unzip")
698 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
699 self.assertGreater(os.path.getsize(logfile), 10)
700 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
701 getfile = "subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/file7-1024.txt"
702 compare = self.gentext(1024)
703 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
704 self.assertEqual(compare, run.output)
705 def test_20410_zzcat_big_test0_zip(self):
706 """ run zzcat-big on test.zip using just archive README """
707 zipfile = "test0.zip"
709 logfile = "test0.readme.big.txt"
710 exe = self.bins("unzzip-big")
711 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
712 self.assertGreater(os.path.getsize(logfile), 10)
713 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
714 def test_20411_zzcat_big_test1_zip(self):
715 """ run zzcat-big on test.zip using just archive README """
716 zipfile = "test1.zip"
718 logfile = "test1.readme.big.txt"
719 exe = self.bins("unzzip-big")
720 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
721 self.assertGreater(os.path.getsize(logfile), 10)
722 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
724 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
725 self.assertEqual("file-1\n", run.output)
726 def test_20412_zzcat_big_test2_zip(self):
727 """ run zzcat-seeke on test.zip using just archive README """
728 zipfile = "test2.zip"
730 logfile = "test2.readme.big.txt"
731 exe = self.bins("unzzip-big")
732 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
733 self.assertGreater(os.path.getsize(logfile), 10)
734 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
736 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
737 self.assertEqual("file-22\n", run.output)
738 def test_20415_zzcat_big_test5_zip(self):
739 """ run zzcat-big on test.zip using archive README """
740 zipfile = "test5.zip"
742 logfile = "test5.readme.zap.txt"
743 exe = self.bins("unzzip-big")
744 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
745 self.assertGreater(os.path.getsize(logfile), 10)
746 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
747 getfile = "subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/file7-1024.txt"
748 compare = self.gentext(1024)
749 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
750 self.assertEqual(compare, run.output)
751 def test_20420_zzcat_mem_test0_zip(self):
752 """ run zzcat-mem on test.zip using just archive README """
753 zipfile = "test0.zip"
755 logfile = "test0.readme.mem.txt"
756 exe = self.bins("unzzip-mem")
757 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
758 self.assertGreater(os.path.getsize(logfile), 10)
759 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
760 def test_20421_zzcat_mem_test1_zip(self):
761 """ run zzcat-mem on test.zip using archive README """
762 zipfile = "test1.zip"
764 logfile = "test1.readme.mem.txt"
765 exe = self.bins("unzzip-mem")
766 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
767 self.assertGreater(os.path.getsize(logfile), 10)
768 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
770 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
771 self.assertEqual("file-1\n", run.output)
772 def test_20422_zzcat_mem_test2_zip(self):
773 """ run zzcat-mem on test.zip using archive README """
774 zipfile = "test2.zip"
776 logfile = "test2.readme.mem.txt"
777 exe = self.bins("unzzip-mem")
778 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
779 self.assertGreater(os.path.getsize(logfile), 10)
780 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
782 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
783 self.assertEqual("file-22\n", run.output)
784 def test_20423_zzcat_mem_test3_zip(self):
785 """ run zzcat-mem on test.zip using archive README """
786 zipfile = "test3.zip"
788 logfile = "test3.readme.mem.txt"
789 exe = self.bins("unzzip-mem")
790 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
791 self.assertGreater(os.path.getsize(logfile), 10)
792 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
794 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
795 self.assertEqual("file-999\n", run.output)
796 def test_20424_zzcat_mem_test4_zip(self):
797 """ run zzcat-mem on test.zip using archive README """
798 zipfile = "test4.zip"
800 logfile = "test4.readme.mem.txt"
801 exe = self.bins("unzzip-mem")
802 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
803 self.assertGreater(os.path.getsize(logfile), 10)
804 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
805 getfile = "file9999.txt"
806 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
807 self.assertEqual("file-9999\n", run.output)
808 def test_20425_zzcat_mem_test5_zip(self):
809 """ run zzcat-mem on test.zip using archive README """
810 zipfile = "test5.zip"
812 logfile = "test5.readme.zap.txt"
813 exe = self.bins("unzzip-mem")
814 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
815 self.assertGreater(os.path.getsize(logfile), 10)
816 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
817 getfile = "subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/file7-1024.txt"
818 compare = self.gentext(1024)
819 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
820 self.assertEqual(compare, run.output)
821 def test_20430_zzcat_mix_test0_zip(self):
822 """ run zzcat-mix on test.zip using just archive README """
823 zipfile = "test0.zip"
825 logfile = "test0.readme.mix.txt"
826 exe = self.bins("unzzip-mix")
827 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
828 self.assertGreater(os.path.getsize(logfile), 10)
829 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
830 def test_20431_zzcat_mix_test1_zip(self):
831 """ run zzcat-mix on test.zip using archive README """
832 zipfile = "test1.zip"
834 logfile = "test1.readme.mix.txt"
835 exe = self.bins("unzzip-mix")
836 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
837 self.assertGreater(os.path.getsize(logfile), 10)
838 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
840 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
841 self.assertEqual("file-1\n", run.output)
842 def test_20432_zzcat_mix_test2_zip(self):
843 """ run zzcat-mix on test.zip using archive README """
844 zipfile = "test2.zip"
846 logfile = "test2.readme.mix.txt"
847 exe = self.bins("unzzip-mix")
848 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
849 self.assertGreater(os.path.getsize(logfile), 10)
850 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
852 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
853 self.assertEqual("file-22\n", run.output)
854 def test_20433_zzcat_mix_test3_zip(self):
855 """ run zzcat-mix on test.zip using archive README """
856 zipfile = "test3.zip"
858 logfile = "test3.readme.mix.txt"
859 exe = self.bins("unzzip-mix")
860 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
861 self.assertGreater(os.path.getsize(logfile), 10)
862 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
864 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
865 self.assertEqual("file-999\n", run.output)
866 def test_20434_zzcat_mix_test4_zip(self):
867 """ run zzcat-mix on test.zip using archive README """
868 zipfile = "test4.zip"
870 logfile = "test4.readme.mix.txt"
871 exe = self.bins("unzzip-mix")
872 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
873 self.assertGreater(os.path.getsize(logfile), 10)
874 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
875 getfile = "file9999.txt"
876 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
877 self.assertEqual("file-9999\n", run.output)
878 def test_20435_zzcat_mix_test5_zip(self):
879 """ run zzcat-mix on test.zip using archive README """
880 zipfile = "test5.zip"
882 logfile = "test5.readme.zap.txt"
883 exe = self.bins("unzzip-mix")
884 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
885 self.assertGreater(os.path.getsize(logfile), 10)
886 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
887 getfile = "subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/file7-1024.txt"
888 compare = self.gentext(1024)
889 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
890 self.assertEqual(compare, run.output)
891 def test_20440_zzcat_zap_test0_zip(self):
892 """ run zzcat-zap on test.zip using just archive README """
893 zipfile = "test0.zip"
895 logfile = "test0.readme.txt"
896 exe = self.bins("unzzip")
897 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
898 self.assertGreater(os.path.getsize(logfile), 10)
899 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
900 def test_20441_zzcat_zap_test1_zip(self):
901 """ run zzcat-zap on test.zip using archive README """
902 zipfile = "test1.zip"
904 logfile = "test1.readme.zap.txt"
905 exe = self.bins("unzzip")
906 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
907 self.assertGreater(os.path.getsize(logfile), 10)
908 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
910 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
911 self.assertEqual("file-1\n", run.output)
912 def test_20442_zzcat_zap_test2_zip(self):
913 """ run zzcat-zap on test.zip using archive README """
914 zipfile = "test2.zip"
916 logfile = "test2.readme.zap.txt"
917 exe = self.bins("unzzip")
918 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
919 self.assertGreater(os.path.getsize(logfile), 10)
920 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
922 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
923 self.assertEqual("file-22\n", run.output)
924 def test_20443_zzcat_zap_test3_zip(self):
925 """ run zzcat-zap on test.zip using archive README """
926 zipfile = "test3.zip"
928 logfile = "test3.readme.zap.txt"
929 exe = self.bins("unzzip")
930 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
931 self.assertGreater(os.path.getsize(logfile), 10)
932 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
934 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
935 self.assertEqual("file-999\n", run.output)
936 def test_20444_zzcat_zap_test4_zip(self):
937 """ run zzcat-zap on test.zip using archive README """
938 zipfile = "test4.zip"
940 logfile = "test4.readme.zap.txt"
941 exe = self.bins("unzzip")
942 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
943 self.assertGreater(os.path.getsize(logfile), 10)
944 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
945 getfile = "file9999.txt"
946 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
947 self.assertEqual("file-9999\n", run.output)
948 def test_20445_zzcat_zap_test5_zip(self):
949 """ run zzcat-zap on test.zip using archive README """
950 zipfile = "test5.zip"
952 logfile = "test5.readme.zap.txt"
953 exe = self.bins("unzzip")
954 run = shell("{exe} -p {zipfile} {getfile} | tee {logfile}".format(**locals()))
955 self.assertGreater(os.path.getsize(logfile), 10)
956 self.assertEqual(run.output.split("\n"), self.readme().split("\n"))
957 getfile = "subdir1/subdir2/subdir3/subdir4/subdir5/subdir6/file7-1024.txt"
958 compare = self.gentext(1024)
959 run = shell("{exe} -p {zipfile} {getfile}".format(**locals()))
960 self.assertEqual(compare, run.output)
962 def test_20500_infozipdir_test0_zip(self):
963 """ run info-zip dir test0.zip """
964 zipfile = "test0.zip"
965 getfile = "test0.zip"
966 exe = self.bins("unzip")
967 run = shell("{exe} -l {getfile} ".format(**locals()))
968 self.assertIn(' README\n', run.output)
969 self.assertLess(len(run.output), 230)
970 def test_20501_infozipdir_test1_zip(self):
971 """ run info-zip dir test1.zip """
972 zipfile = "test1.zip"
973 getfile = "test1.zip"
974 exe = self.bins("unzip")
975 run = shell("{exe} -l {getfile} ".format(**locals()))
976 self.assertIn(' file.1\n', run.output)
977 self.assertIn(' file.2\n', run.output)
978 self.assertIn(' file.9\n', run.output)
979 self.assertIn(' README\n', run.output)
980 def test_20502_infozipdir_big_test2_zip(self):
981 """ run info-zip dir test2.zip """
982 zipfile = "test2.zip"
983 getfile = "test2.zip"
984 exe = self.bins("unzip")
985 run = shell("{exe} -l {getfile} ".format(**locals()))
986 self.assertIn(' file.01\n', run.output)
987 self.assertIn(' file.22\n', run.output)
988 self.assertIn(' file.99\n', run.output)
989 def test_20503_infozipdir_big_test3_zip(self):
990 """ run info-zip dir test3.zip """
991 zipfile = "test3.zip"
992 getfile = "test3.zip"
993 exe = self.bins("unzip")
994 run = shell("{exe} -l {getfile} ".format(**locals()))
995 self.assertIn(' file.001\n', run.output)
996 self.assertIn(' file.222\n', run.output)
997 self.assertIn(' file.999\n', run.output)
998 def test_20504_infozipdir_big_test4_zip(self):
999 """ run info-zip dir test4.zip """
1000 zipfile = "test4.zip"
1001 getfile = "test4.zip"
1002 exe = self.bins("unzip")
1003 run = shell("{exe} -l {getfile} ".format(**locals()))
1004 self.assertIn(' file0001.txt\n', run.output)
1005 self.assertIn(' file2222.txt\n', run.output)
1006 self.assertIn(' file9999.txt\n', run.output)
1007 def test_20505_infozipdir_big_test5_zip(self):
1008 """ run info-zip dir on test5.zip """
1009 zipfile = "test5.zip"
1010 getfile = "test5.zip"
1011 exe = self.bins("unzzip-mix")
1012 run = shell("{exe} -v {getfile} ".format(**locals()))
1013 self.assertIn('/subdir14/file15-128.txt\n', run.output)
1014 self.assertIn('/subdir5/subdir6/', run.output)
1015 self.assertIn(' defl:N ', run.output)
1016 self.assertIn(' stored ', run.output)
1017 def test_20510_zzdir_big_test0_zip(self):
1018 """ run zzdir-big on test0.zip """
1019 zipfile = "test0.zip"
1020 getfile = "test0.zip"
1021 exe = self.bins("unzzip-big")
1022 run = shell("{exe} -l {getfile} ".format(**locals()))
1023 self.assertIn(' README\n', run.output)
1024 self.assertLess(len(run.output), 30)
1025 def test_20511_zzdir_big_test1_zip(self):
1026 """ run zzdir-big on test1.zip """
1027 zipfile = "test1.zip"
1028 getfile = "test1.zip"
1029 exe = self.bins("unzzip-big")
1030 run = shell("{exe} -l {getfile} ".format(**locals()))
1031 self.assertIn(' file.1\n', run.output)
1032 self.assertIn(' file.2\n', run.output)
1033 self.assertIn(' file.9\n', run.output)
1034 self.assertIn(' README\n', run.output)
1035 def test_20512_zzdir_big_test2_zip(self):
1036 """ run zzdir-big on test2.zip """
1037 zipfile = "test2.zip"
1038 getfile = "test2.zip"
1039 exe = self.bins("unzzip-big")
1040 run = shell("{exe} -l {getfile} ".format(**locals()))
1041 self.assertIn(' file.01\n', run.output)
1042 self.assertIn(' file.22\n', run.output)
1043 self.assertIn(' file.99\n', run.output)
1044 def test_20513_zzdir_big_test3_zip(self):
1045 """ run zzdir-big on test3.zip """
1046 zipfile = "test3.zip"
1047 getfile = "test3.zip"
1048 exe = self.bins("unzzip-big")
1049 run = shell("{exe} -l {getfile} ".format(**locals()))
1050 self.assertIn(' file.001\n', run.output)
1051 self.assertIn(' file.222\n', run.output)
1052 self.assertIn(' file.999\n', run.output)
1053 def test_20514_zzdir_big_test4_zip(self):
1054 """ run zzdir-big on test4.zip """
1055 zipfile = "test4.zip"
1056 getfile = "test4.zip"
1057 exe = self.bins("unzzip-big")
1058 run = shell("{exe} -l {getfile} ".format(**locals()))
1059 self.assertIn(' file0001.txt\n', run.output)
1060 self.assertIn(' file2222.txt\n', run.output)
1061 self.assertIn(' file9999.txt\n', run.output)
1062 def test_20515_zzdir_big_test5_zip(self):
1063 """ run zzdir-big on test5.zip """
1064 zipfile = "test5.zip"
1065 getfile = "test5.zip"
1066 exe = self.bins("unzzip-mix")
1067 run = shell("{exe} -v {getfile} ".format(**locals()))
1068 self.assertIn('/subdir14/file15-128.txt\n', run.output)
1069 self.assertIn('/subdir5/subdir6/', run.output)
1070 self.assertIn(' defl:N ', run.output)
1071 self.assertIn(' stored ', run.output)
1072 def test_20520_zzdir_mem_test0_zip(self):
1073 """ run zzdir-mem on test0.zip """
1074 zipfile = "test0.zip"
1075 getfile = "test0.zip"
1076 exe = self.bins("unzzip-mem")
1077 run = shell("{exe} -v {getfile} ".format(**locals()))
1078 self.assertIn(' README\n', run.output)
1079 self.assertIn(' defl:N ', run.output)
1080 self.assertLess(len(run.output), 30)
1081 def test_20521_zzdir_mem_test1_zip(self):
1082 """ run zzdir-mem on test1.zip """
1083 zipfile = "test1.zip"
1084 getfile = "test1.zip"
1085 exe = self.bins("unzzip-mem")
1086 run = shell("{exe} -v {getfile} ".format(**locals()))
1087 self.assertIn(' file.1\n', run.output)
1088 self.assertIn(' file.2\n', run.output)
1089 self.assertIn(' file.9\n', run.output)
1090 self.assertIn(' README\n', run.output)
1091 self.assertIn(' defl:N ', run.output)
1092 self.assertIn(' stored ', run.output)
1093 def test_20522_zzdir_mem_test2_zip(self):
1094 """ run zzdir-mem on test2.zip """
1095 zipfile = "test2.zip"
1096 getfile = "test2.zip"
1097 exe = self.bins("unzzip-mem")
1098 run = shell("{exe} -v {getfile} ".format(**locals()))
1099 self.assertIn(' file.01\n', run.output)
1100 self.assertIn(' file.22\n', run.output)
1101 self.assertIn(' file.99\n', run.output)
1102 self.assertIn(' defl:N ', run.output)
1103 self.assertIn(' stored ', run.output)
1104 def test_20523_zzdir_mem_test3_zip(self):
1105 """ run zzdir-mem on test3.zip """
1106 zipfile = "test3.zip"
1107 getfile = "test3.zip"
1108 exe = self.bins("unzzip-mem")
1109 run = shell("{exe} -v {getfile} ".format(**locals()))
1110 self.assertIn(' file.001\n', run.output)
1111 self.assertIn(' file.222\n', run.output)
1112 self.assertIn(' file.999\n', run.output)
1113 self.assertIn(' defl:N ', run.output)
1114 self.assertIn(' stored ', run.output)
1115 def test_20524_zzdir_mem_test4_zip(self):
1116 """ run zzdir-mem on test4.zip """
1117 zipfile = "test4.zip"
1118 getfile = "test4.zip"
1119 exe = self.bins("unzzip-mem")
1120 run = shell("{exe} -v {getfile} ".format(**locals()))
1121 self.assertIn(' file0001.txt\n', run.output)
1122 self.assertIn(' file2222.txt\n', run.output)
1123 self.assertIn(' file9999.txt\n', run.output)
1124 self.assertNotIn(' defl:N ', run.output)
1125 self.assertIn(' stored ', run.output)
1126 def test_20525_zzdir_mem_test5_zip(self):
1127 """ run zzdir-mem on test5.zip """
1128 zipfile = "test5.zip"
1129 getfile = "test5.zip"
1130 exe = self.bins("unzzip-mix")
1131 run = shell("{exe} -v {getfile} ".format(**locals()))
1132 self.assertIn('/subdir14/file15-128.txt\n', run.output)
1133 self.assertIn('/subdir5/subdir6/', run.output)
1134 self.assertIn(' defl:N ', run.output)
1135 self.assertIn(' stored ', run.output)
1136 def test_20530_zzdir_mix_test0_zip(self):
1137 """ run zzdir-mix on test0.zip """
1138 # self.skipTest("todo")
1139 zipfile = "test0.zip"
1140 getfile = "test0.zip"
1141 exe = self.bins("unzzip-mix")
1142 run = shell("{exe} -v {getfile} ".format(**locals()))
1143 self.assertIn(' README\n', run.output)
1144 self.assertIn(' defl:N ', run.output)
1145 self.assertLess(len(run.output), 30)
1146 def test_20531_zzdir_mix_test1_zip(self):
1147 """ run zzdir-mix on test1.zip """
1148 zipfile = "test1.zip"
1149 getfile = "test1.zip"
1150 exe = self.bins("unzzip-mix")
1151 run = shell("{exe} -v {getfile} ".format(**locals()))
1152 self.assertIn(' file.1\n', run.output)
1153 self.assertIn(' file.2\n', run.output)
1154 self.assertIn(' file.9\n', run.output)
1155 self.assertIn(' README\n', run.output)
1156 self.assertIn(' defl:N ', run.output)
1157 self.assertIn(' stored ', run.output)
1158 def test_20532_zzdir_mix_test2_zip(self):
1159 """ run zzdir-mix on test2.zip """
1160 zipfile = "test2.zip"
1161 getfile = "test2.zip"
1162 exe = self.bins("unzzip-mix")
1163 run = shell("{exe} -v {getfile} ".format(**locals()))
1164 self.assertIn(' file.01\n', run.output)
1165 self.assertIn(' file.22\n', run.output)
1166 self.assertIn(' file.99\n', run.output)
1167 self.assertIn(' defl:N ', run.output)
1168 self.assertIn(' stored ', run.output)
1169 def test_20533_zzdir_mix_test3_zip(self):
1170 """ run zzdir-mix on test3.zip """
1171 zipfile = "test3.zip"
1172 getfile = "test3.zip"
1173 exe = self.bins("unzzip-mix")
1174 run = shell("{exe} -v {getfile} ".format(**locals()))
1175 self.assertIn(' file.001\n', run.output)
1176 self.assertIn(' file.222\n', run.output)
1177 self.assertIn(' file.999\n', run.output)
1178 self.assertIn(' defl:N ', run.output)
1179 self.assertIn(' stored ', run.output)
1180 def test_20534_zzdir_mix_test4_zip(self):
1181 """ run zzdir-mix on test4.zip """
1182 zipfile = "test4.zip"
1183 getfile = "test4.zip"
1184 exe = self.bins("unzzip-mix")
1185 run = shell("{exe} -v {getfile} ".format(**locals()))
1186 self.assertIn(' file0001.txt\n', run.output)
1187 self.assertIn(' file2222.txt\n', run.output)
1188 self.assertIn(' file9999.txt\n', run.output)
1189 self.assertNotIn(' defl:N ', run.output)
1190 self.assertIn(' stored ', run.output)
1191 def test_20535_zzdir_mix_test5_zip(self):
1192 """ run zzdir-mix on test5.zip """
1193 zipfile = "test5.zip"
1194 getfile = "test5.zip"
1195 exe = self.bins("unzzip-mix")
1196 run = shell("{exe} -v {getfile} ".format(**locals()))
1197 self.assertIn('/subdir14/file15-128.txt\n', run.output)
1198 self.assertIn('/subdir5/subdir6/', run.output)
1199 self.assertIn(' defl:N ', run.output)
1200 self.assertIn(' stored ', run.output)
1201 def test_20540_zzdir_zap_test0_zip(self):
1202 """ run zzdir-zap on test0.zip """
1203 zipfile = "test0.zip"
1204 getfile = "test0.zip"
1205 exe = self.bins("unzzip")
1206 run = shell("{exe} -v {getfile} ".format(**locals()))
1207 self.assertIn(' README\n', run.output)
1208 self.assertIn(' defl:N ', run.output)
1209 self.assertLess(len(run.output), 30)
1210 def test_20541_zzdir_zap_test1_zip(self):
1211 """ run zzdir-zap on test1.zip """
1212 zipfile = "test1.zip"
1213 getfile = "test1.zip"
1214 exe = self.bins("unzzip")
1215 run = shell("{exe} -v {getfile} ".format(**locals()))
1216 self.assertIn(' file.1\n', run.output)
1217 self.assertIn(' file.2\n', run.output)
1218 self.assertIn(' file.9\n', run.output)
1219 self.assertIn(' README\n', run.output)
1220 self.assertIn(' defl:N ', run.output)
1221 self.assertIn(' stored ', run.output)
1222 def test_20542_zzdir_zap_test2_zip(self):
1223 """ run zzdir-zap on test2.zip """
1224 zipfile = "test2.zip"
1225 getfile = "test2.zip"
1226 exe = self.bins("unzzip")
1227 run = shell("{exe} -v {getfile} ".format(**locals()))
1228 self.assertIn(' file.01\n', run.output)
1229 self.assertIn(' file.22\n', run.output)
1230 self.assertIn(' file.99\n', run.output)
1231 self.assertIn(' defl:N ', run.output)
1232 self.assertIn(' stored ', run.output)
1233 def test_20543_zzdir_zap_test3_zip(self):
1234 """ run zzdir-zap on test3.zip """
1235 zipfile = "test3.zip"
1236 getfile = "test3.zip"
1237 exe = self.bins("unzzip")
1238 run = shell("{exe} -v {getfile} ".format(**locals()))
1239 self.assertIn(' file.001\n', run.output)
1240 self.assertIn(' file.222\n', run.output)
1241 self.assertIn(' file.999\n', run.output)
1242 self.assertIn(' defl:N ', run.output)
1243 self.assertIn(' stored ', run.output)
1244 def test_20544_zzdir_zap_test4_zip(self):
1245 """ run zzdir-zap on test4.zip """
1246 zipfile = "test4.zip"
1247 getfile = "test4.zip"
1248 exe = self.bins("unzzip")
1249 run = shell("{exe} -v {getfile} ".format(**locals()))
1250 self.assertIn(' file0001.txt\n', run.output)
1251 self.assertIn(' file2222.txt\n', run.output)
1252 self.assertIn(' file9999.txt\n', run.output)
1253 self.assertNotIn(' defl:N ', run.output)
1254 self.assertIn(' stored ', run.output)
1255 def test_20545_zzdir_zap_test5_zip(self):
1256 """ run zzdir-zap on test5.zip """
1257 zipfile = "test5.zip"
1258 getfile = "test5.zip"
1259 exe = self.bins("unzzip")
1260 run = shell("{exe} -v {getfile} ".format(**locals()))
1261 self.assertIn('/subdir14/file15-128.txt\n', run.output)
1262 self.assertIn('/subdir5/subdir6/', run.output)
1263 self.assertIn(' defl:N ', run.output)
1264 self.assertIn(' stored ', run.output)
1265 def test_20595_zzextract_zap_test5_zip(self):
1266 """ run zzextract-zap on test5.zip
1267 => coughs up a SEGFAULT in zzip_dir_close() ?!?"""
1268 zipfile = "test5.zip"
1269 getfile = "test5.zip"
1270 tmpdir = self.testdir()
1271 exe = self.bins("unzzip")
1272 run = shell("cd {tmpdir} && ../{exe} ../{getfile} ".format(**locals()))
1273 self.assertTrue(tmpdir+'/subdir1/subdir2/file3-1024.txt')
1276 url_CVE_2017_5977 = "https://raw.githubusercontent.com/asarubbo/poc/master/"
1277 zip_CVE_2017_5977 = "00153-zziplib-invalidread-zzip_mem_entry_extra_block"
1278 def test_59770_infozipdir_CVE_2017_5977(self):
1279 """ run info-zip dir test0.zip """
1280 tmpdir = self.testdir()
1281 filename = self.zip_CVE_2017_5977
1282 file_url = self.url_CVE_2017_5977
1283 download(file_url, filename, tmpdir)
1284 exe = self.bins("unzip")
1285 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1286 returncodes = [0, 2])
1287 self.assertIn(" didn't find end-of-central-dir signature at end of central dir", run.errors)
1288 self.assertIn(" 2 extra bytes at beginning or within zipfile", run.errors)
1289 self.assertLess(len(run.output), 280)
1291 def test_59771_zzipdir_big_CVE_2017_5977(self):
1292 """ run info-zip -l $(CVE_2017_5977).zip """
1293 tmpdir = self.testdir()
1294 filename = self.zip_CVE_2017_5977
1295 file_url = self.url_CVE_2017_5977
1296 download(file_url, filename, tmpdir)
1297 exe = self.bins("unzzip-big")
1298 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1300 self.assertLess(len(run.output), 30)
1301 self.assertLess(len(errors(run.errors)), 1)
1302 self.assertIn(" stored test", run.output)
1304 def test_59772_zzipdir_mem_CVE_2017_5977(self):
1305 """ run unzzip-mem -l $(CVE_2017_5977).zip """
1306 tmpdir = self.testdir()
1307 filename = self.zip_CVE_2017_5977
1308 file_url = self.url_CVE_2017_5977
1309 download(file_url, filename, tmpdir)
1310 exe = self.bins("unzzip-mem")
1311 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1313 self.assertLess(len(run.output), 30)
1314 self.assertLess(len(errors(run.errors)), 1)
1315 self.assertIn(" 3 test", run.output)
1317 def test_59773_zzipdir_mix_CVE_2017_5977(self):
1318 """ run unzzip-mix -l $(CVE_2017_5977).zip """
1319 tmpdir = self.testdir()
1320 filename = self.zip_CVE_2017_5977
1321 file_url = self.url_CVE_2017_5977
1322 download(file_url, filename, tmpdir)
1323 exe = self.bins("unzzip-mix")
1324 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1326 self.assertLess(len(run.output), 30)
1327 self.assertLess(len(errors(run.errors)), 1)
1328 self.assertIn(" 3 test", run.output)
1330 def test_59774_zzipdir_zap_CVE_2017_5977(self):
1331 """ run unzzip -l $(CVE_2017_5977).zip """
1332 tmpdir = self.testdir()
1333 filename = self.zip_CVE_2017_5977
1334 file_url = self.url_CVE_2017_5977
1335 download(file_url, filename, tmpdir)
1336 exe = self.bins("unzzip")
1337 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1338 returncodes = [0, 255])
1339 self.assertLess(len(run.output), 30)
1340 self.assertLess(len(errors(run.errors)), 1)
1341 self.assertIn(" 3 test", run.output)
1343 def test_59775_zipext_info_CVE_2017_5977(self):
1344 """ run info' unzip $(CVE_2017_5977).zip """
1345 tmpdir = self.testdir()
1346 filename = self.zip_CVE_2017_5977
1347 file_url = self.url_CVE_2017_5977
1348 download(file_url, filename, tmpdir)
1349 exe = self.bins("unzip")
1350 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
1352 self.assertLess(len(run.output), 90)
1353 self.assertLess(len(errors(run.errors)), 900)
1354 self.assertIn('test: mismatching "local" filename', run.errors)
1355 self.assertIn('test: unknown compression method', run.errors)
1356 self.assertEqual(os.path.getsize(tmpdir+"/test"), 0)
1358 def test_59776_zzipext_big_CVE_2017_5977(self):
1359 """ run unzzip-big $(CVE_2017_5977).zip """
1360 tmpdir = self.testdir()
1361 filename = self.zip_CVE_2017_5977
1362 file_url = self.url_CVE_2017_5977
1363 download(file_url, filename, tmpdir)
1364 exe = self.bins("unzzip-big")
1365 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1367 self.assertLess(len(run.output), 30)
1368 self.assertLess(len(errors(run.errors)), 1)
1369 self.assertEqual(os.path.getsize(tmpdir+"/test"), 0)
1371 @unittest.expectedFailure
1372 def test_59777_zzipext_mem_CVE_2017_5977(self):
1373 """ run unzzip-mem $(CVE_2017_5977).zip """
1374 tmpdir = self.testdir()
1375 filename = self.zip_CVE_2017_5977
1376 file_url = self.url_CVE_2017_5977
1377 download(file_url, filename, tmpdir)
1378 exe = self.bins("unzzip-mem")
1379 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1381 self.assertLess(len(run.output), 30)
1382 self.assertLess(len(errors(run.errors)), 1)
1383 self.assertEqual(os.path.getsize(tmpdir+"/test"), 0)
1385 def test_59778_zzipext_mix_CVE_2017_5977(self):
1386 """ run unzzip-mix $(CVE_2017_5977).zip """
1387 tmpdir = self.testdir()
1388 filename = self.zip_CVE_2017_5977
1389 file_url = self.url_CVE_2017_5977
1390 download(file_url, filename, tmpdir)
1391 exe = self.bins("unzzip-mix")
1392 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1394 self.assertLess(len(run.output), 30)
1395 self.assertLess(len(errors(run.errors)), 1)
1396 self.assertEqual(os.path.getsize(tmpdir+"/test"), 0)
1398 def test_59779_zzipext_zap_CVE_2017_5977(self):
1399 """ run unzzip $(CVE_2017_5977).zip """
1400 tmpdir = self.testdir()
1401 filename = self.zip_CVE_2017_5977
1402 file_url = self.url_CVE_2017_5977
1403 download(file_url, filename, tmpdir)
1404 exe = self.bins("unzzip")
1405 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1407 self.assertLess(len(run.output), 30)
1408 self.assertLess(len(errors(run.errors)), 1)
1409 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3) # TODO
1413 url_CVE_2017_5978 = "https://raw.githubusercontent.com/asarubbo/poc/master/"
1414 zip_CVE_2017_5978 = "00156-zziplib-oobread-zzip_mem_entry_new"
1415 def test_59780_infozipdir_CVE_2017_5978(self):
1416 """ run info-zip dir test0.zip """
1417 tmpdir = self.testdir()
1418 filename = self.zip_CVE_2017_5978
1419 file_url = self.url_CVE_2017_5978
1420 download(file_url, filename, tmpdir)
1421 exe = self.bins("unzip")
1422 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1423 returncodes = [0, 3])
1424 self.assertIn(' missing 4608 bytes in zipfile', run.errors)
1425 self.assertIn(' attempt to seek before beginning of zipfile', run.errors)
1426 self.assertLess(len(run.output), 80)
1427 self.assertLess(len(errors(run.errors)), 430)
1429 def test_59781_zzipdir_big_CVE_2017_5978(self):
1430 """ run info-zip -l $(CVE_2017_5978).zip """
1431 tmpdir = self.testdir()
1432 filename = self.zip_CVE_2017_5978
1433 file_url = self.url_CVE_2017_5978
1434 download(file_url, filename, tmpdir)
1435 exe = self.bins("unzzip-big")
1436 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1438 self.assertLess(len(run.output), 30)
1439 self.assertLess(len(errors(run.errors)), 1)
1440 self.assertIn(" stored (null)", run.output)
1442 def test_59782_zzipdir_mem_CVE_2017_5978(self):
1443 """ run unzzip-mem -l $(CVE_2017_5978).zip """
1444 tmpdir = self.testdir()
1445 filename = self.zip_CVE_2017_5978
1446 file_url = self.url_CVE_2017_5978
1447 download(file_url, filename, tmpdir)
1448 exe = self.bins("unzzip-mem")
1449 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1451 self.assertLess(len(run.output), 1)
1452 self.assertLess(len(errors(run.errors)), 180)
1453 self.assertIn("zzip_mem_disk_load : unable to load entry", run.errors)
1454 self.assertIn("zzip_mem_disk_open : unable to load disk", run.errors)
1456 @unittest.expectedFailure
1457 def test_59783_zzipdir_mix_CVE_2017_5978(self):
1458 """ run unzzip-mix -l $(CVE_2017_5978).zip """
1459 tmpdir = self.testdir()
1460 filename = self.zip_CVE_2017_5978
1461 file_url = self.url_CVE_2017_5978
1462 download(file_url, filename, tmpdir)
1463 exe = self.bins("unzzip-mix")
1464 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1466 self.assertLess(len(run.output), 1)
1467 self.assertLess(len(errors(run.errors)), 180)
1468 self.assertIn("zzip_mem_disk_load : unable to load entry", run.errors)
1469 self.assertIn("zzip_mem_disk_open : unable to load disk", run.errors)
1471 @unittest.expectedFailure
1472 def test_59784_zzipdir_zap_CVE_2017_5978(self):
1473 """ run unzzip -l $(CVE_2017_5978).zip """
1474 tmpdir = self.testdir()
1475 filename = self.zip_CVE_2017_5978
1476 file_url = self.url_CVE_2017_5978
1477 download(file_url, filename, tmpdir)
1478 exe = self.bins("unzzip")
1479 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1480 returncodes = [0, 255])
1481 self.assertLess(len(run.output), 1)
1482 self.assertLess(len(errors(run.errors)), 180)
1483 self.assertIn("zzip_mem_disk_load : unable to load entry", run.errors)
1484 self.assertIn("zzip_mem_disk_open : unable to load disk", run.errors)
1486 def test_59785_zipext_info_CVE_2017_5978(self):
1487 """ run info' unzip $(CVE_2017_5978).zip """
1488 tmpdir = self.testdir()
1489 filename = self.zip_CVE_2017_5978
1490 file_url = self.url_CVE_2017_5978
1491 download(file_url, filename, tmpdir)
1492 exe = self.bins("unzip")
1493 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
1495 self.assertLess(len(run.output), 90)
1496 self.assertLess(len(errors(run.errors)), 900)
1497 self.assertIn('attempt to seek before beginning of zipfile', run.errors)
1498 self.assertFalse(os.path.exists(tmpdir+"/test"))
1500 @unittest.expectedFailure
1501 def test_59786_zzipext_big_CVE_2017_5978(self):
1502 """ run unzzip-big $(CVE_2017_5978).zip """
1503 tmpdir = self.testdir()
1504 filename = self.zip_CVE_2017_5978
1505 file_url = self.url_CVE_2017_5978
1506 download(file_url, filename, tmpdir)
1507 exe = self.bins("unzzip-big")
1508 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1510 self.assertLess(len(run.output), 30)
1511 self.assertLess(len(errors(run.errors)), 1)
1512 self.assertEqual(os.path.getsize(tmpdir+"/test"), 0)
1514 def test_59787_zzipext_mem_CVE_2017_5978(self):
1515 """ run unzzip-mem $(CVE_2017_5978).zip """
1516 tmpdir = self.testdir()
1517 filename = self.zip_CVE_2017_5978
1518 file_url = self.url_CVE_2017_5978
1519 download(file_url, filename, tmpdir)
1520 exe = self.bins("unzzip-mem")
1521 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1523 self.assertLess(len(run.output), 30)
1524 self.assertLess(len(errors(run.errors)), 300)
1525 self.assertIn("..(nil)", run.errors)
1526 self.assertFalse(os.path.exists(tmpdir+"/test"))
1527 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 0)
1529 def test_59788_zzipext_mix_CVE_2017_5978(self):
1530 """ run unzzip-mix $(CVE_2017_5978).zip """
1531 tmpdir = self.testdir()
1532 filename = self.zip_CVE_2017_5978
1533 file_url = self.url_CVE_2017_5978
1534 download(file_url, filename, tmpdir)
1535 exe = self.bins("unzzip-mem")
1536 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1538 self.assertLess(len(run.output), 30)
1539 self.assertLess(len(errors(run.errors)), 300)
1540 self.assertIn("..(nil)", run.errors)
1541 self.assertFalse(os.path.exists(tmpdir+"/test"))
1542 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 0)
1544 @unittest.expectedFailure
1545 def test_59789_zzipext_zap_CVE_2017_5978(self):
1546 """ run unzzip $(CVE_2017_5978).zip """
1547 tmpdir = self.testdir()
1548 filename = self.zip_CVE_2017_5978
1549 file_url = self.url_CVE_2017_5978
1550 download(file_url, filename, tmpdir)
1551 exe = self.bins("unzzip")
1552 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1554 self.assertLess(len(run.output), 30)
1555 self.assertLess(len(errors(run.errors)), 300)
1556 self.assertIn("..(nil)", run.errors)
1557 self.assertFalse(os.path.exists(tmpdir+"/test"))
1558 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 0)
1561 url_CVE_2017_5979 = "https://raw.githubusercontent.com/asarubbo/poc/master/"
1562 zip_CVE_2017_5979 = "00157-zziplib-nullptr-prescan_entry"
1563 def test_59790_infozipdir_CVE_2017_5979(self):
1564 """ run info-zip dir test0.zip """
1565 tmpdir = self.testdir()
1566 filename = self.zip_CVE_2017_5979
1567 file_url = self.url_CVE_2017_5979
1568 download(file_url, filename, tmpdir)
1569 exe = self.bins("unzip")
1570 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1572 self.assertIn(' 1 file', run.output)
1573 self.assertLess(len(run.output), 330)
1574 self.assertLess(len(errors(run.errors)), 1)
1576 def test_59791_zzipdir_big_CVE_2017_5979(self):
1577 """ run info-zip -l $(CVE_2017_5979).zip """
1578 tmpdir = self.testdir()
1579 filename = self.zip_CVE_2017_5979
1580 file_url = self.url_CVE_2017_5979
1581 download(file_url, filename, tmpdir)
1582 exe = self.bins("unzzip-big")
1583 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1585 self.assertLess(len(run.output), 30)
1586 self.assertLess(len(errors(run.errors)), 1)
1587 self.assertIn(" stored a", run.output)
1589 def test_59792_zzipdir_mem_CVE_2017_5979(self):
1590 """ run unzzip-mem -l $(CVE_2017_5979).zip """
1591 tmpdir = self.testdir()
1592 filename = self.zip_CVE_2017_5979
1593 file_url = self.url_CVE_2017_5979
1594 download(file_url, filename, tmpdir)
1595 exe = self.bins("unzzip-mem")
1596 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1598 self.assertLess(len(run.output), 30)
1599 self.assertLess(len(errors(run.errors)), 1)
1600 self.assertIn(" 3 a", run.output)
1602 def test_59793_zzipdir_mix_CVE_2017_5979(self):
1603 """ run unzzip-mix -l $(CVE_2017_5979).zip """
1604 tmpdir = self.testdir()
1605 filename = self.zip_CVE_2017_5979
1606 file_url = self.url_CVE_2017_5979
1607 download(file_url, filename, tmpdir)
1608 exe = self.bins("unzzip-mix")
1609 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1611 self.assertLess(len(run.output), 30)
1612 self.assertLess(len(errors(run.errors)), 1)
1613 self.assertIn(" 3 a", run.output)
1615 def test_59794_zzipdir_zap_CVE_2017_5979(self):
1616 """ run unzzip -l $(CVE_2017_5979).zip """
1617 tmpdir = self.testdir()
1618 filename = self.zip_CVE_2017_5979
1619 file_url = self.url_CVE_2017_5979
1620 download(file_url, filename, tmpdir)
1621 exe = self.bins("unzzip")
1622 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1623 returncodes = [0, 255])
1624 self.assertLess(len(run.output), 30)
1625 self.assertLess(len(errors(run.errors)), 1)
1626 self.assertIn(" 3 a", run.output)
1628 def test_59795_zipext_info_CVE_2017_5979(self):
1629 """ run info' unzip $(CVE_2017_5979).zip """
1630 tmpdir = self.testdir()
1631 filename = self.zip_CVE_2017_5979
1632 file_url = self.url_CVE_2017_5979
1633 download(file_url, filename, tmpdir)
1634 exe = self.bins("unzip")
1635 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
1637 self.assertLess(len(run.output), 90)
1638 self.assertLess(len(errors(run.errors)), 1)
1639 self.assertIn('extracting: a', run.output)
1640 self.assertEqual(os.path.getsize(tmpdir+"/a"), 3)
1642 def test_59796_zzipext_big_CVE_2017_5979(self):
1643 """ run unzzip-big $(CVE_2017_5979).zip """
1644 tmpdir = self.testdir()
1645 filename = self.zip_CVE_2017_5979
1646 file_url = self.url_CVE_2017_5979
1647 download(file_url, filename, tmpdir)
1648 exe = self.bins("unzzip-big")
1649 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1651 self.assertLess(len(run.output), 30)
1652 self.assertLess(len(errors(run.errors)), 1)
1653 self.assertEqual(os.path.getsize(tmpdir+"/a"), 3)
1655 @unittest.expectedFailure
1656 def test_59797_zzipext_mem_CVE_2017_5979(self):
1657 """ run unzzip-mem $(CVE_2017_5979).zip """
1658 tmpdir = self.testdir()
1659 filename = self.zip_CVE_2017_5979
1660 file_url = self.url_CVE_2017_5979
1661 download(file_url, filename, tmpdir)
1662 exe = self.bins("unzzip-mem")
1663 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1665 self.assertLess(len(run.output), 30)
1666 self.assertLess(len(errors(run.errors)), 1)
1667 self.assertEqual(os.path.getsize(tmpdir+"/a"), 3)
1669 @unittest.expectedFailure
1670 def test_59798_zzipext_mix_CVE_2017_5979(self):
1671 """ run unzzip-mix $(CVE_2017_5979).zip """
1672 tmpdir = self.testdir()
1673 filename = self.zip_CVE_2017_5979
1674 file_url = self.url_CVE_2017_5979
1675 download(file_url, filename, tmpdir)
1676 exe = self.bins("unzzip-mix")
1677 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1679 self.assertLess(len(run.output), 30)
1680 self.assertLess(len(errors(run.errors)), 20)
1681 self.assertEqual(os.path.getsize(tmpdir+"/a"), 3)
1683 # @unittest.expectedFailure
1684 def test_59799_zzipext_zap_CVE_2017_5979(self):
1685 """ run unzzip-mix $(CVE_2017_5979).zip """
1686 tmpdir = self.testdir()
1687 filename = self.zip_CVE_2017_5979
1688 file_url = self.url_CVE_2017_5979
1689 download(file_url, filename, tmpdir)
1690 exe = self.bins("unzzip")
1691 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1693 self.assertLess(len(run.output), 30)
1694 self.assertLess(len(errors(run.errors)), 20)
1695 self.assertEqual(os.path.getsize(tmpdir+"/a"), 3)
1699 url_CVE_2017_5974 = "https://raw.githubusercontent.com/asarubbo/poc/master/"
1700 zip_CVE_2017_5974 = "00150-zziplib-heapoverflow-__zzip_get32"
1701 def test_59740_infozipdir_CVE_2017_5974(self):
1702 """ run info-zip dir test0.zip """
1703 tmpdir = self.testdir()
1704 filename = self.zip_CVE_2017_5974
1705 file_url = self.url_CVE_2017_5974
1706 download(file_url, filename, tmpdir)
1707 exe = self.bins("unzip")
1708 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1709 returncodes = [0, 9])
1710 self.assertIn(' 1 file', run.output)
1711 self.assertLess(len(run.output), 330)
1712 self.assertLess(len(errors(run.errors)), 1)
1714 def test_59741_zzipdir_big_CVE_2017_5974(self):
1715 """ run unzzip-big -l $(CVE_2017_5974).zip """
1716 tmpdir = self.testdir()
1717 filename = self.zip_CVE_2017_5974
1718 file_url = self.url_CVE_2017_5974
1719 download(file_url, filename, tmpdir)
1720 exe = self.bins("unzzip-big")
1721 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1723 self.assertLess(len(run.output), 30)
1724 self.assertLess(len(errors(run.errors)), 1)
1725 self.assertIn(" stored test", run.output)
1727 def test_59742_zzipdir_mem_CVE_2017_5974(self):
1728 """ run unzzip-mem -l $(CVE_2017_5974).zip """
1729 tmpdir = self.testdir()
1730 filename = self.zip_CVE_2017_5974
1731 file_url = self.url_CVE_2017_5974
1732 download(file_url, filename, tmpdir)
1733 exe = self.bins("unzzip-mem")
1734 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1736 self.assertLess(len(run.output), 30)
1737 self.assertLess(len(errors(run.errors)), 1)
1738 self.assertIn(" 3 test", run.output)
1740 @unittest.expectedFailure
1741 def test_59743_zzipdir_mix_CVE_2017_5974(self):
1742 """ run unzzip-mix -l $(CVE_2017_5974).zip """
1743 tmpdir = self.testdir()
1744 filename = self.zip_CVE_2017_5974
1745 file_url = self.url_CVE_2017_5974
1746 download(file_url, filename, tmpdir)
1747 exe = self.bins("unzzip-mix")
1748 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1750 self.assertLess(len(run.output), 30)
1751 self.assertLess(len(errors(run.errors)), 1)
1752 self.assertIn(" 3 test", run.output)
1754 def test_59744_zzipdir_zap_CVE_2017_5974(self):
1755 """ run unzzip -l $(CVE_2017_5974).zip """
1756 tmpdir = self.testdir()
1757 filename = self.zip_CVE_2017_5974
1758 file_url = self.url_CVE_2017_5974
1759 download(file_url, filename, tmpdir)
1760 exe = self.bins("unzzip")
1761 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1762 returncodes = [0, 255])
1763 self.assertLess(len(run.output), 30)
1764 self.assertLess(len(errors(run.errors)), 1)
1765 self.assertIn(" 3 test", run.output)
1767 def test_59745_zzipext_zip_CVE_2017_5974(self):
1768 """ run info' unzip $(CVE_2017_5974).zip """
1769 tmpdir = self.testdir()
1770 filename = self.zip_CVE_2017_5974
1771 file_url = self.url_CVE_2017_5974
1772 download(file_url, filename, tmpdir)
1773 exe = self.bins("unzip")
1774 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
1776 self.assertLess(len(run.output), 90)
1777 self.assertLess(len(errors(run.errors)), 1)
1778 self.assertIn(" extracting: test", run.output)
1779 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
1781 def test_59746_zzipext_big_CVE_2017_5974(self):
1782 """ run unzzip-big $(CVE_2017_5974).zip """
1783 tmpdir = self.testdir()
1784 filename = self.zip_CVE_2017_5974
1785 file_url = self.url_CVE_2017_5974
1786 download(file_url, filename, tmpdir)
1787 exe = self.bins("unzzip-big")
1788 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1790 self.assertLess(len(run.output), 30)
1791 self.assertLess(len(errors(run.errors)), 1)
1792 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
1794 @unittest.expectedFailure
1795 def test_59747_zzipext_mem_CVE_2017_5974(self):
1796 """ run unzzip-mem $(CVE_2017_5974).zip """
1797 tmpdir = self.testdir()
1798 filename = self.zip_CVE_2017_5974
1799 file_url = self.url_CVE_2017_5974
1800 download(file_url, filename, tmpdir)
1801 exe = self.bins("unzzip-mem")
1802 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1804 self.assertLess(len(run.output), 30)
1805 self.assertLess(len(errors(run.errors)), 1)
1806 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
1808 @unittest.expectedFailure
1809 def test_59748_zzipext_mix_CVE_2017_5974(self):
1810 """ run unzzip-mix $(CVE_2017_5974).zip """
1811 tmpdir = self.testdir()
1812 filename = self.zip_CVE_2017_5974
1813 file_url = self.url_CVE_2017_5974
1814 download(file_url, filename, tmpdir)
1815 exe = self.bins("unzzip-mix")
1816 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1818 self.assertLess(len(run.output), 30)
1819 self.assertLess(len(errors(run.errors)), 1)
1820 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
1822 def test_59749_zzipext_zap_CVE_2017_5974(self):
1823 """ run unzzip $(CVE_2017_5974).zip """
1824 tmpdir = self.testdir()
1825 filename = self.zip_CVE_2017_5974
1826 file_url = self.url_CVE_2017_5974
1827 download(file_url, filename, tmpdir)
1828 exe = self.bins("unzzip")
1829 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1831 self.assertLess(len(run.output), 30)
1832 self.assertLess(len(errors(run.errors)), 1)
1833 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
1836 url_CVE_2017_5975 = "https://raw.githubusercontent.com/asarubbo/poc/master/"
1837 zip_CVE_2017_5975 = "00151-zziplib-heapoverflow-__zzip_get64"
1838 def test_59750_infozipdir_CVE_2017_5975(self):
1839 """ run info-zip dir test0.zip """
1840 tmpdir = self.testdir()
1841 filename = self.zip_CVE_2017_5975
1842 file_url = self.url_CVE_2017_5975
1843 download(file_url, filename, tmpdir)
1844 exe = self.bins("unzip")
1845 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1846 returncodes = [0, 2])
1847 self.assertIn(' missing 10 bytes in zipfile', run.errors)
1848 self.assertIn("didn't find end-of-central-dir signature at end of central dir", run.errors)
1849 self.assertIn(' 1 file', run.output)
1850 self.assertLess(len(run.output), 330)
1851 self.assertLess(len(errors(run.errors)), 430)
1853 def test_59751_zzipdir_big_CVE_2017_5975(self):
1854 """ run info-zip -l $(CVE_2017_5975).zip """
1855 tmpdir = self.testdir()
1856 filename = self.zip_CVE_2017_5975
1857 file_url = self.url_CVE_2017_5975
1858 download(file_url, filename, tmpdir)
1859 exe = self.bins("unzzip-big")
1860 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1862 self.assertLess(len(run.output), 30)
1863 self.assertLess(len(errors(run.errors)), 1)
1864 self.assertIn(" stored test", run.output)
1866 def test_59752_zzipdir_mem_CVE_2017_5975(self):
1867 """ run unzzip-mem -l $(CVE_2017_5975).zip """
1868 tmpdir = self.testdir()
1869 filename = self.zip_CVE_2017_5975
1870 file_url = self.url_CVE_2017_5975
1871 download(file_url, filename, tmpdir)
1872 exe = self.bins("unzzip-mem")
1873 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1875 self.assertLess(len(run.output), 1)
1876 self.assertLess(len(errors(run.errors)), 180)
1877 self.assertIn("zzip_mem_disk_load : unable to load entry", run.errors)
1878 self.assertIn("zzip_mem_disk_open : unable to load disk", run.errors)
1880 def test_59753_zzipdir_mix_CVE_2017_5975(self):
1881 """ run unzzip-mix -l $(CVE_2017_5975).zip """
1882 tmpdir = self.testdir()
1883 filename = self.zip_CVE_2017_5975
1884 file_url = self.url_CVE_2017_5975
1885 download(file_url, filename, tmpdir)
1886 exe = self.bins("unzzip-mix")
1887 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1889 self.assertLess(len(run.output), 1)
1890 self.assertLess(len(errors(run.errors)), 180)
1891 self.assertIn("zzip_mem_disk_load : unable to load entry", run.errors)
1892 self.assertIn("zzip_mem_disk_open : unable to load disk", run.errors)
1894 def test_59754_zzipdir_zap_CVE_2017_5975(self):
1895 """ run unzzip -l $(CVE_2017_5975).zip """
1896 tmpdir = self.testdir()
1897 filename = self.zip_CVE_2017_5975
1898 file_url = self.url_CVE_2017_5975
1899 download(file_url, filename, tmpdir)
1900 exe = self.bins("unzzip")
1901 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1902 returncodes = [0, 255])
1903 self.assertLess(len(run.output), 1)
1904 self.assertLess(len(errors(run.errors)), 180)
1905 self.assertIn(": Success", run.errors)
1907 def test_59755_zipext_info_CVE_2017_5975(self):
1908 """ run info' unzip $(CVE_2017_5975).zip """
1909 tmpdir = self.testdir()
1910 filename = self.zip_CVE_2017_5975
1911 file_url = self.url_CVE_2017_5975
1912 download(file_url, filename, tmpdir)
1913 exe = self.bins("unzip")
1914 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
1916 self.assertLess(len(run.output), 90)
1917 self.assertLess(len(errors(run.errors)), 900)
1918 self.assertIn('file #1: bad zipfile offset (local header sig): 127', run.errors)
1919 #self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
1920 self.assertFalse(os.path.exists(tmpdir+"/test"))
1922 def test_59756_zzipext_big_CVE_2017_5975(self):
1923 """ run unzzip-big $(CVE_2017_5975).zip """
1924 tmpdir = self.testdir()
1925 filename = self.zip_CVE_2017_5975
1926 file_url = self.url_CVE_2017_5975
1927 download(file_url, filename, tmpdir)
1928 exe = self.bins("unzzip-big")
1929 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1931 self.assertLess(len(run.output), 30)
1932 self.assertLess(len(errors(run.errors)), 1)
1933 self.assertEqual(os.path.getsize(tmpdir+"/test"), 0) # TODO
1935 def test_59757_zzipext_mem_CVE_2017_5975(self):
1936 """ run unzzip-mem $(CVE_2017_5975).zip """
1937 tmpdir = self.testdir()
1938 filename = self.zip_CVE_2017_5975
1939 file_url = self.url_CVE_2017_5975
1940 download(file_url, filename, tmpdir)
1941 exe = self.bins("unzzip-mem")
1942 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1944 self.assertLess(len(run.output), 30)
1945 self.assertLess(len(errors(run.errors)), 200)
1946 self.assertIn("..(nil)", run.errors)
1947 self.assertFalse(os.path.exists(tmpdir+"/test"))
1949 @unittest.expectedFailure
1950 def test_59758_zzipext_mix_CVE_2017_5975(self):
1951 """ run unzzip-mix $(CVE_2017_5975).zip """
1952 tmpdir = self.testdir()
1953 filename = self.zip_CVE_2017_5975
1954 file_url = self.url_CVE_2017_5975
1955 download(file_url, filename, tmpdir)
1956 exe = self.bins("unzzip-mix")
1957 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1959 self.assertLess(len(run.output), 30)
1960 self.assertLess(len(errors(run.errors)), 200)
1961 self.assertIn("..(nil)", run.errors)
1962 self.assertFalse(os.path.exists(tmpdir+"/test"))
1964 @unittest.expectedFailure
1965 def test_59759_zzipext_zap_CVE_2017_5975(self):
1966 """ run unzzip $(CVE_2017_5975).zip """
1967 tmpdir = self.testdir()
1968 filename = self.zip_CVE_2017_5975
1969 file_url = self.url_CVE_2017_5975
1970 download(file_url, filename, tmpdir)
1971 exe = self.bins("unzzip")
1972 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
1974 self.assertLess(len(run.output), 30)
1975 self.assertLess(len(errors(run.errors)), 200)
1976 self.assertIn("..(nil)", run.errors)
1977 self.assertFalse(os.path.exists(tmpdir+"/test"))
1981 url_CVE_2017_5976 = "https://raw.githubusercontent.com/asarubbo/poc/master/"
1982 zip_CVE_2017_5976 = "00152-zziplib-heapoverflow-zzip_mem_entry_extra_block"
1983 def test_59760_infozipdir_CVE_2017_5976(self):
1984 """ run info-zip dir test0.zip """
1985 tmpdir = self.testdir()
1986 filename = self.zip_CVE_2017_5976
1987 file_url = self.url_CVE_2017_5976
1988 download(file_url, filename, tmpdir)
1989 exe = self.bins("unzip")
1990 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
1991 returncodes = [0, 2])
1992 self.assertIn(' 27 extra bytes at beginning or within zipfile', run.errors)
1993 self.assertIn("didn't find end-of-central-dir signature at end of central dir", run.errors)
1994 self.assertIn(' 1 file', run.output)
1995 self.assertLess(len(run.output), 330)
1996 self.assertLess(len(errors(run.errors)), 500)
1998 def test_59761_zzipdir_big_CVE_2017_5976(self):
1999 """ run info-zip -l $(CVE_2017_5976).zip """
2000 tmpdir = self.testdir()
2001 filename = self.zip_CVE_2017_5976
2002 file_url = self.url_CVE_2017_5976
2003 download(file_url, filename, tmpdir)
2004 exe = self.bins("unzzip-big")
2005 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2007 self.assertLess(len(run.output), 30)
2008 self.assertLess(len(errors(run.errors)), 1)
2009 self.assertIn(" stored test", run.output)
2011 def test_59762_zzipdir_mem_CVE_2017_5976(self):
2012 """ run unzzip-mem -l $(CVE_2017_5976).zip """
2013 tmpdir = self.testdir()
2014 filename = self.zip_CVE_2017_5976
2015 file_url = self.url_CVE_2017_5976
2016 download(file_url, filename, tmpdir)
2017 exe = self.bins("unzzip-mem")
2018 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2020 self.assertLess(len(run.output), 30)
2021 self.assertLess(len(errors(run.errors)), 1)
2022 self.assertIn("3 test", run.output)
2024 def test_59763_zzipdir_mix_CVE_2017_5976(self):
2025 """ run unzzip-mix -l $(CVE_2017_5976).zip """
2026 tmpdir = self.testdir()
2027 filename = self.zip_CVE_2017_5976
2028 file_url = self.url_CVE_2017_5976
2029 download(file_url, filename, tmpdir)
2030 exe = self.bins("unzzip-mix")
2031 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2033 self.assertLess(len(run.output), 30)
2034 self.assertLess(len(errors(run.errors)), 1)
2035 self.assertIn("3 test", run.output)
2037 def test_59764_zzipdir_zap_CVE_2017_5976(self):
2038 """ run unzzip -l $(CVE_2017_5976).zip """
2039 tmpdir = self.testdir()
2040 filename = self.zip_CVE_2017_5976
2041 file_url = self.url_CVE_2017_5976
2042 download(file_url, filename, tmpdir)
2043 exe = self.bins("unzzip")
2044 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2045 returncodes = [0, 255])
2046 self.assertLess(len(run.output), 30)
2047 self.assertLess(len(errors(run.errors)), 1)
2048 self.assertIn("3 test", run.output)
2050 def test_59765_zipext_info_CVE_2017_5976(self):
2051 """ run info' unzip $(CVE_2017_5976).zip """
2052 tmpdir = self.testdir()
2053 filename = self.zip_CVE_2017_5976
2054 file_url = self.url_CVE_2017_5976
2055 download(file_url, filename, tmpdir)
2056 exe = self.bins("unzip")
2057 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
2059 self.assertLess(len(run.output), 190)
2060 self.assertLess(len(errors(run.errors)), 900)
2061 self.assertIn("extracting: test", run.output)
2062 self.assertIn('-27 bytes too long', run.errors)
2063 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2064 # self.assertFalse(os.path.exists(tmpdir+"/test"))
2066 def test_59766_zzipext_big_CVE_2017_5976(self):
2067 """ run unzzip-big $(CVE_2017_5976).zip """
2068 tmpdir = self.testdir()
2069 filename = self.zip_CVE_2017_5976
2070 file_url = self.url_CVE_2017_5976
2071 download(file_url, filename, tmpdir)
2072 exe = self.bins("unzzip-big")
2073 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2075 self.assertLess(len(run.output), 30)
2076 self.assertLess(len(errors(run.errors)), 1)
2077 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2079 def test_59767_zzipext_mem_CVE_2017_5976(self):
2080 """ run unzzip-mem $(CVE_2017_5976).zip """
2081 tmpdir = self.testdir()
2082 filename = self.zip_CVE_2017_5976
2083 file_url = self.url_CVE_2017_5976
2084 download(file_url, filename, tmpdir)
2085 exe = self.bins("unzzip-mem")
2086 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2088 self.assertLess(len(run.output), 30)
2089 self.assertLess(len(errors(run.errors)), 30) # TODO
2090 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2092 @unittest.expectedFailure
2093 def test_59768_zzipext_mix_CVE_2017_5976(self):
2094 """ run unzzip-mix $(CVE_2017_5976).zip """
2095 tmpdir = self.testdir()
2096 filename = self.zip_CVE_2017_5976
2097 file_url = self.url_CVE_2017_5976
2098 download(file_url, filename, tmpdir)
2099 exe = self.bins("unzzip-mix")
2100 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2102 self.assertLess(len(run.output), 30)
2103 self.assertLess(len(errors(run.errors)), 30) # TODO
2104 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2106 def test_59769_zzipext_zap_CVE_2017_5976(self):
2107 """ run unzzip $(CVE_2017_5976).zip """
2108 tmpdir = self.testdir()
2109 filename = self.zip_CVE_2017_5976
2110 file_url = self.url_CVE_2017_5976
2111 download(file_url, filename, tmpdir)
2112 exe = self.bins("unzzip")
2113 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2115 self.assertLess(len(run.output), 30)
2116 self.assertLess(len(errors(run.errors)), 30)
2117 self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2120 url_CVE_2017_5980 = "https://raw.githubusercontent.com/asarubbo/poc/master/"
2121 zip_CVE_2017_5980 = "00154-zziplib-nullptr-zzip_mem_entry_new"
2122 def test_59800_infozipdir_CVE_2017_5980(self):
2123 """ run info-zip dir test0.zip """
2124 tmpdir = self.testdir()
2125 filename = self.zip_CVE_2017_5980
2126 file_url = self.url_CVE_2017_5980
2127 download(file_url, filename, tmpdir)
2128 exe = self.bins("unzip")
2129 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2130 returncodes = [0, 2])
2131 self.assertIn(' missing 6 bytes in zipfile', run.errors)
2132 self.assertIn("didn't find end-of-central-dir signature at end of central dir", run.errors)
2133 self.assertIn(' 1 file', run.output)
2134 self.assertLess(len(run.output), 330)
2135 self.assertLess(len(errors(run.errors)), 500)
2137 def test_59801_zzipdir_big_CVE_2017_5980(self):
2138 """ run info-zip -l $(CVE_2017_5980).zip """
2139 tmpdir = self.testdir()
2140 filename = self.zip_CVE_2017_5980
2141 file_url = self.url_CVE_2017_5980
2142 download(file_url, filename, tmpdir)
2143 exe = self.bins("unzzip-big")
2144 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2146 self.assertLess(len(run.output), 30)
2147 self.assertLess(len(errors(run.errors)), 1)
2148 self.assertIn(" stored (null)", run.output)
2150 def test_59802_zzipdir_mem_CVE_2017_5980(self):
2151 """ run unzzip-mem -l $(CVE_2017_5980).zip """
2152 tmpdir = self.testdir()
2153 filename = self.zip_CVE_2017_5980
2154 file_url = self.url_CVE_2017_5980
2155 download(file_url, filename, tmpdir)
2156 exe = self.bins("unzzip-mem")
2157 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2159 self.assertLess(len(run.output), 1)
2160 self.assertLess(len(errors(run.errors)), 180)
2161 self.assertIn("zzip_mem_disk_load : unable to load entry", run.errors)
2162 self.assertIn("zzip_mem_disk_open : unable to load disk", run.errors)
2164 @unittest.expectedFailure
2165 def test_59803_zzipdir_mix_CVE_2017_5980(self):
2166 """ run unzzip-mix -l $(CVE_2017_5980).zip """
2167 tmpdir = self.testdir()
2168 filename = self.zip_CVE_2017_5980
2169 file_url = self.url_CVE_2017_5980
2170 download(file_url, filename, tmpdir)
2171 exe = self.bins("unzzip-mix")
2172 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2174 self.assertLess(len(run.output), 1)
2175 self.assertLess(len(errors(run.errors)), 180)
2176 self.assertIn("zzip_mem_disk_load : unable to load entry", run.errors)
2177 self.assertIn("zzip_mem_disk_open : unable to load disk", run.errors)
2179 def test_59804_zzipdir_zap_CVE_2017_5980(self):
2180 """ run unzzip -l $(CVE_2017_5980).zip """
2181 tmpdir = self.testdir()
2182 filename = self.zip_CVE_2017_5980
2183 file_url = self.url_CVE_2017_5980
2184 download(file_url, filename, tmpdir)
2185 exe = self.bins("unzzip")
2186 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2187 returncodes = [0, 255])
2188 self.assertLess(len(run.output), 1)
2189 self.assertLess(len(errors(run.errors)), 180)
2190 self.assertIn(": Success", run.errors)
2192 def test_59805_zipext_info_CVE_2017_5980(self):
2193 """ run info' unzip $(CVE_2017_5980).zip """
2194 tmpdir = self.testdir()
2195 filename = self.zip_CVE_2017_5980
2196 file_url = self.url_CVE_2017_5980
2197 download(file_url, filename, tmpdir)
2198 exe = self.bins("unzip")
2199 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
2201 self.assertLess(len(run.output), 90)
2202 self.assertLess(len(errors(run.errors)), 900)
2203 self.assertIn('file #1: bad zipfile offset (lseek)', run.errors)
2204 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2205 self.assertFalse(os.path.exists(tmpdir+"/test"))
2207 @unittest.expectedFailure
2208 def test_59806_zzipext_big_CVE_2017_5980(self):
2209 """ run unzzip-big $(CVE_2017_5980).zip """
2210 tmpdir = self.testdir()
2211 filename = self.zip_CVE_2017_5980
2212 file_url = self.url_CVE_2017_5980
2213 download(file_url, filename, tmpdir)
2214 exe = self.bins("unzzip-big")
2215 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2217 self.assertLess(len(run.output), 30)
2218 self.assertLess(len(errors(run.errors)), 1)
2219 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2220 self.assertFalse(os.path.exists(tmpdir+"/test"))
2222 def test_59807_zzipext_mem_CVE_2017_5980(self):
2223 """ run unzzip-mem $(CVE_2017_5980).zip """
2224 tmpdir = self.testdir()
2225 filename = self.zip_CVE_2017_5980
2226 file_url = self.url_CVE_2017_5980
2227 download(file_url, filename, tmpdir)
2228 exe = self.bins("unzzip-mem")
2229 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2231 self.assertLess(len(run.output), 30)
2232 self.assertLess(len(errors(run.errors)), 200)
2233 self.assertFalse(os.path.exists(tmpdir+"/test"))
2234 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2236 @unittest.expectedFailure
2237 def test_59808_zzipext_mix_CVE_2017_5980(self):
2238 """ run unzzip-mix $(CVE_2017_5980).zip """
2239 tmpdir = self.testdir()
2240 filename = self.zip_CVE_2017_5980
2241 file_url = self.url_CVE_2017_5980
2242 download(file_url, filename, tmpdir)
2243 exe = self.bins("unzzip-mix")
2244 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2246 self.assertLess(len(run.output), 30)
2247 self.assertLess(len(errors(run.errors)), 200)
2248 self.assertFalse(os.path.exists(tmpdir+"/test"))
2249 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2251 def test_59809_zzipext_zap_CVE_2017_5980(self):
2252 """ run unzzip $(CVE_2017_5980).zip """
2253 tmpdir = self.testdir()
2254 filename = self.zip_CVE_2017_5980
2255 file_url = self.url_CVE_2017_5980
2256 download(file_url, filename, tmpdir)
2257 exe = self.bins("unzzip")
2258 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2259 returncodes = [255]) # TODO
2260 self.assertLess(len(run.output), 30)
2261 self.assertLess(len(errors(run.errors)), 200)
2262 self.assertFalse(os.path.exists(tmpdir+"/test"))
2263 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2266 url_CVE_2017_5981 = "https://raw.githubusercontent.com/asarubbo/poc/master/"
2267 zip_CVE_2017_5981 = "00161-zziplib-assertionfailure-seeko_C"
2268 def test_59810_infozipdir_CVE_2017_5981(self):
2269 """ run info-zip dir test0.zip """
2270 tmpdir = self.testdir()
2271 filename = self.zip_CVE_2017_5981
2272 file_url = self.url_CVE_2017_5981
2273 download(file_url, filename, tmpdir)
2274 exe = self.bins("unzip")
2275 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2276 returncodes = [0, 3])
2277 self.assertIn(' missing 4 bytes in zipfile', run.errors)
2278 self.assertIn("zipfile corrupt", run.errors)
2279 self.assertLess(len(run.output), 80)
2280 self.assertLess(len(errors(run.errors)), 500)
2282 def test_59811_zzipdir_big_CVE_2017_5981(self):
2283 """ run info-zip -l $(CVE_2017_5981).zip """
2284 tmpdir = self.testdir()
2285 filename = self.zip_CVE_2017_5981
2286 file_url = self.url_CVE_2017_5981
2287 download(file_url, filename, tmpdir)
2288 exe = self.bins("unzzip-big")
2289 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2291 self.assertLess(len(run.output), 1)
2292 self.assertLess(len(errors(run.errors)), 1)
2294 def test_59812_zzipdir_mem_CVE_2017_5981(self):
2295 """ run unzzip-mem -l $(CVE_2017_5981).zip """
2296 tmpdir = self.testdir()
2297 filename = self.zip_CVE_2017_5981
2298 file_url = self.url_CVE_2017_5981
2299 download(file_url, filename, tmpdir)
2300 exe = self.bins("unzzip-mem")
2301 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2303 self.assertLess(len(run.output), 1)
2304 self.assertLess(len(errors(run.errors)), 1)
2306 def test_59813_zzipdir_mix_CVE_2017_5981(self):
2307 """ run unzzip-mix -l $(CVE_2017_5981).zip """
2308 tmpdir = self.testdir()
2309 filename = self.zip_CVE_2017_5981
2310 file_url = self.url_CVE_2017_5981
2311 download(file_url, filename, tmpdir)
2312 exe = self.bins("unzzip-mix")
2313 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2315 self.assertLess(len(run.output), 1)
2316 self.assertLess(len(errors(run.errors)), 1)
2318 def test_59814_zzipdir_zap_CVE_2017_5981(self):
2319 """ run unzzip-zap -l $(CVE_2017_5981).zip """
2320 tmpdir = self.testdir()
2321 filename = self.zip_CVE_2017_5981
2322 file_url = self.url_CVE_2017_5981
2323 download(file_url, filename, tmpdir)
2324 exe = self.bins("unzzip")
2325 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2326 returncodes = [0, 255])
2327 self.assertLess(len(run.output), 1)
2328 self.assertLess(len(errors(run.errors)), 80)
2329 self.assertIn(": Success", run.errors)
2331 def test_59815_zipext_info_CVE_2017_5981(self):
2332 """ run info' unzip $(CVE_2017_5981).zip """
2333 tmpdir = self.testdir()
2334 filename = self.zip_CVE_2017_5981
2335 file_url = self.url_CVE_2017_5981
2336 download(file_url, filename, tmpdir)
2337 exe = self.bins("unzip")
2338 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
2340 self.assertLess(len(run.output), 90)
2341 self.assertLess(len(errors(run.errors)), 500)
2342 self.assertIn('zipfile corrupt.', run.errors)
2343 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2344 self.assertFalse(os.path.exists(tmpdir+"/test"))
2346 def test_59816_zzipext_big_CVE_2017_5981(self):
2347 """ run unzzip-big $(CVE_2017_5981).zip """
2348 tmpdir = self.testdir()
2349 filename = self.zip_CVE_2017_5981
2350 file_url = self.url_CVE_2017_5981
2351 download(file_url, filename, tmpdir)
2352 exe = self.bins("unzzip-big")
2353 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2355 self.assertLess(len(run.output), 30)
2356 self.assertLess(len(errors(run.errors)), 1)
2357 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2358 self.assertFalse(os.path.exists(tmpdir+"/test"))
2360 def test_59817_zzipext_mem_CVE_2017_5981(self):
2361 """ run unzzip-mem $(CVE_2017_5981).zip """
2362 tmpdir = self.testdir()
2363 filename = self.zip_CVE_2017_5981
2364 file_url = self.url_CVE_2017_5981
2365 download(file_url, filename, tmpdir)
2366 exe = self.bins("unzzip-mem")
2367 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2369 self.assertLess(len(run.output), 30)
2370 self.assertLess(len(errors(run.errors)), 10)
2371 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2372 self.assertFalse(os.path.exists(tmpdir+"/test"))
2374 @unittest.expectedFailure
2375 def test_59818_zzipext_mix_CVE_2017_5981(self):
2376 """ run unzzip-mix $(CVE_2017_5981).zip """
2377 tmpdir = self.testdir()
2378 filename = self.zip_CVE_2017_5981
2379 file_url = self.url_CVE_2017_5981
2380 download(file_url, filename, tmpdir)
2381 exe = self.bins("unzzip-mix")
2382 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2384 self.assertLess(len(run.output), 30)
2385 self.assertLess(len(errors(run.errors)), 10)
2386 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2387 self.assertFalse(os.path.exists(tmpdir+"/test"))
2389 @unittest.expectedFailure
2390 def test_59819_zzipext_zap_CVE_2017_5981(self):
2391 """ run unzzip $(CVE_2017_5981).zip """
2392 tmpdir = self.testdir()
2393 filename = self.zip_CVE_2017_5981
2394 file_url = self.url_CVE_2017_5981
2395 download(file_url, filename, tmpdir)
2396 exe = self.bins("unzzip")
2397 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2399 self.assertLess(len(run.output), 30)
2400 self.assertLess(len(errors(run.errors)), 10)
2401 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2402 self.assertFalse(os.path.exists(tmpdir+"/test"))
2406 url_CVE_2018_10 = "https://github.com/ProbeFuzzer/poc/blob/master/zziplib"
2407 zip_CVE_2018_10 = "zziplib_0-13-67_zzdir_invalid-memory-access_main.zip"
2408 def test_63010(self):
2409 """ info unzip -l $(CVE).zip """
2410 tmpdir = self.testdir()
2411 filename = self.zip_CVE_2018_10
2412 file_url = self.url_CVE_2018_10
2413 download(file_url, filename, tmpdir)
2414 exe = self.bins("unzip")
2415 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2416 returncodes = [0, 9])
2417 self.assertIn("End-of-central-directory signature not found", run.errors)
2418 self.assertLess(len(run.output), 80)
2419 self.assertLess(len(errors(run.errors)), 600)
2421 def test_63011(self):
2422 """ unzzip-big -l $(CVE).zip """
2423 tmpdir = self.testdir()
2424 filename = self.zip_CVE_2018_10
2425 file_url = self.url_CVE_2018_10
2426 download(file_url, filename, tmpdir)
2427 exe = self.bins("unzzip-big")
2428 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2430 self.assertLess(len(run.output), 1)
2431 self.assertLess(len(errors(run.errors)), 1)
2433 def test_63012(self):
2434 """ unzzip-mem -l $(CVE).zip """
2435 tmpdir = self.testdir()
2436 filename = self.zip_CVE_2018_10
2437 file_url = self.url_CVE_2018_10
2438 download(file_url, filename, tmpdir)
2439 exe = self.bins("unzzip-mem")
2440 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2442 self.assertLess(len(run.output), 1)
2443 self.assertLess(len(errors(run.errors)), 1)
2445 @unittest.expectedFailure
2446 def test_63013(self):
2447 """ unzzip-mix -l $(CVE).zip """
2448 tmpdir = self.testdir()
2449 filename = self.zip_CVE_2018_10
2450 file_url = self.url_CVE_2018_10
2451 download(file_url, filename, tmpdir)
2452 exe = self.bins("unzzip-mix")
2453 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2455 self.assertLess(len(run.output), 1)
2456 self.assertLess(len(errors(run.errors)), 1)
2458 def test_63014(self):
2459 """ unzzip-zap -l $(CVE).zip """
2460 tmpdir = self.testdir()
2461 filename = self.zip_CVE_2018_10
2462 file_url = self.url_CVE_2018_10
2463 download(file_url, filename, tmpdir)
2464 exe = self.bins("unzzip")
2465 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2466 returncodes = [0, 255])
2467 self.assertLess(len(run.output), 1)
2468 self.assertLess(len(errors(run.errors)), 80)
2469 self.assertIn(": Success", run.errors)
2471 def test_63015(self):
2472 """ info unzip $(CVE).zip """
2473 tmpdir = self.testdir()
2474 filename = self.zip_CVE_2018_10
2475 file_url = self.url_CVE_2018_10
2476 download(file_url, filename, tmpdir)
2477 exe = self.bins("unzip")
2478 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
2480 self.assertLess(len(run.output), 90)
2481 self.assertLess(len(errors(run.errors)), 600)
2482 self.assertIn('End-of-central-directory signature not found', run.errors)
2483 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2484 self.assertFalse(os.path.exists(tmpdir+"/test"))
2486 def test_63016(self):
2487 """ unzzip-big $(CVE).zip """
2488 tmpdir = self.testdir()
2489 filename = self.zip_CVE_2018_10
2490 file_url = self.url_CVE_2018_10
2491 download(file_url, filename, tmpdir)
2492 exe = self.bins("unzzip-big")
2493 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2495 self.assertLess(len(run.output), 30)
2496 self.assertLess(len(errors(run.errors)), 1)
2497 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2498 self.assertFalse(os.path.exists(tmpdir+"/test"))
2500 def test_63017(self):
2501 """ unzzip-mem $(CVE).zip """
2502 tmpdir = self.testdir()
2503 filename = self.zip_CVE_2018_10
2504 file_url = self.url_CVE_2018_10
2505 download(file_url, filename, tmpdir)
2506 exe = self.bins("unzzip-mem")
2507 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2509 self.assertLess(len(run.output), 30)
2510 self.assertLess(len(errors(run.errors)), 10)
2511 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2512 self.assertFalse(os.path.exists(tmpdir+"/test"))
2514 @unittest.expectedFailure
2515 def test_63018(self):
2516 """ unzzip-mix $(CVE).zip """
2517 tmpdir = self.testdir()
2518 filename = self.zip_CVE_2018_10
2519 file_url = self.url_CVE_2018_10
2520 download(file_url, filename, tmpdir)
2521 exe = self.bins("unzzip-mix")
2522 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2524 self.assertLess(len(run.output), 30)
2525 self.assertLess(len(errors(run.errors)), 10)
2526 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2527 self.assertFalse(os.path.exists(tmpdir+"/test"))
2529 @unittest.expectedFailure
2530 def test_63019(self):
2531 """ unzzip $(CVE).zip """
2532 tmpdir = self.testdir()
2533 filename = self.zip_CVE_2018_10
2534 file_url = self.url_CVE_2018_10
2535 download(file_url, filename, tmpdir)
2536 exe = self.bins("unzzip")
2537 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2539 self.assertLess(len(run.output), 30)
2540 self.assertLess(len(errors(run.errors)), 10)
2541 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2542 self.assertFalse(os.path.exists(tmpdir+"/test"))
2545 url_CVE_2018_11 = "https://github.com/ProbeFuzzer/poc/blob/master/zziplib"
2546 zip_CVE_2018_11 = "zziplib_0-13-67_unzzip_infinite-loop_unzzip_cat_file.zip"
2547 def test_63110(self):
2548 """ info unzip -l $(CVE).zip """
2549 tmpdir = self.testdir()
2550 filename = self.zip_CVE_2018_11
2551 file_url = self.url_CVE_2018_11
2552 download(file_url, filename, tmpdir)
2553 exe = self.bins("unzip")
2554 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2555 returncodes = [0, 9])
2556 self.assertIn("End-of-central-directory signature not found", run.errors)
2557 self.assertLess(len(run.output), 90)
2558 self.assertLess(len(errors(run.errors)), 600)
2560 def test_63111(self):
2561 """ unzzip-big -l $(CVE).zip """
2562 tmpdir = self.testdir()
2563 filename = self.zip_CVE_2018_11
2564 file_url = self.url_CVE_2018_11
2565 download(file_url, filename, tmpdir)
2566 exe = self.bins("unzzip-big")
2567 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2569 self.assertLess(len(run.output), 1)
2570 self.assertLess(len(errors(run.errors)), 1)
2572 def test_63112(self):
2573 """ unzzip-mem -l $(CVE).zip """
2574 tmpdir = self.testdir()
2575 filename = self.zip_CVE_2018_11
2576 file_url = self.url_CVE_2018_11
2577 download(file_url, filename, tmpdir)
2578 exe = self.bins("unzzip-mem")
2579 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2581 self.assertLess(len(run.output), 1)
2582 self.assertLess(len(errors(run.errors)), 1)
2584 @unittest.expectedFailure
2585 def test_63113(self):
2586 """ unzzip-mix -l $(CVE).zip """
2587 tmpdir = self.testdir()
2588 filename = self.zip_CVE_2018_11
2589 file_url = self.url_CVE_2018_11
2590 download(file_url, filename, tmpdir)
2591 exe = self.bins("unzzip-mix")
2592 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2594 self.assertLess(len(run.output), 1)
2595 self.assertLess(len(errors(run.errors)), 1)
2597 def test_63114(self):
2598 """ unzzip-zap -l $(CVE).zip """
2599 tmpdir = self.testdir()
2600 filename = self.zip_CVE_2018_11
2601 file_url = self.url_CVE_2018_11
2602 download(file_url, filename, tmpdir)
2603 exe = self.bins("unzzip")
2604 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2605 returncodes = [0, 255])
2606 self.assertLess(len(run.output), 1)
2607 self.assertLess(len(errors(run.errors)), 90)
2608 self.assertIn(": Success", run.errors)
2610 def test_63115(self):
2611 """ info unzip $(CVE).zip """
2612 tmpdir = self.testdir()
2613 filename = self.zip_CVE_2018_11
2614 file_url = self.url_CVE_2018_11
2615 download(file_url, filename, tmpdir)
2616 exe = self.bins("unzip")
2617 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
2619 self.assertLess(len(run.output), 90)
2620 self.assertLess(len(errors(run.errors)), 600)
2621 self.assertIn('End-of-central-directory signature not found', run.errors)
2622 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2623 self.assertFalse(os.path.exists(tmpdir+"/test"))
2625 def test_63116(self):
2626 """ unzzip-big $(CVE).zip """
2627 tmpdir = self.testdir()
2628 filename = self.zip_CVE_2018_11
2629 file_url = self.url_CVE_2018_11
2630 download(file_url, filename, tmpdir)
2631 exe = self.bins("unzzip-big")
2632 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2634 self.assertLess(len(run.output), 30)
2635 self.assertLess(len(errors(run.errors)), 1)
2636 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2637 self.assertFalse(os.path.exists(tmpdir+"/test"))
2639 def test_63117(self):
2640 """ unzzip-mem $(CVE).zip """
2641 tmpdir = self.testdir()
2642 filename = self.zip_CVE_2018_11
2643 file_url = self.url_CVE_2018_11
2644 download(file_url, filename, tmpdir)
2645 exe = self.bins("unzzip-mem")
2646 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2648 self.assertLess(len(run.output), 30)
2649 self.assertLess(len(errors(run.errors)), 10)
2650 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2651 self.assertFalse(os.path.exists(tmpdir+"/test"))
2653 @unittest.expectedFailure
2654 def test_63118(self):
2655 """ unzzip-mix $(CVE).zip """
2656 tmpdir = self.testdir()
2657 filename = self.zip_CVE_2018_11
2658 file_url = self.url_CVE_2018_11
2659 download(file_url, filename, tmpdir)
2660 exe = self.bins("unzzip-mix")
2661 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2663 self.assertLess(len(run.output), 30)
2664 self.assertLess(len(errors(run.errors)), 10)
2665 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2666 self.assertFalse(os.path.exists(tmpdir+"/test"))
2668 # @unittest.expectedFailure
2669 def test_63119(self):
2670 """ unzzip $(CVE).zip """
2671 tmpdir = self.testdir()
2672 filename = self.zip_CVE_2018_11
2673 file_url = self.url_CVE_2018_11
2674 download(file_url, filename, tmpdir)
2675 exe = self.bins("unzzip")
2676 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2678 self.assertLess(len(run.output), 30)
2679 self.assertLess(len(errors(run.errors)), 10)
2680 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2681 self.assertFalse(os.path.exists(tmpdir+"/test"))
2684 url_CVE_2018_12 = "https://github.com/ProbeFuzzer/poc/blob/master/zziplib"
2685 zip_CVE_2018_12 = "zziplib_0-13-67_unzip-mem_buffer-access-with-incorrect-length-value_zzip_disk_fread.zip"
2686 def test_63810(self):
2687 """ info unzip -l $(CVE).zip """
2688 tmpdir = self.testdir()
2689 filename = self.zip_CVE_2018_12
2690 file_url = self.url_CVE_2018_12
2691 download(file_url, filename, tmpdir)
2692 exe = self.bins("unzip")
2693 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2694 returncodes = [0, 9])
2695 self.assertIn("End-of-central-directory signature not found", run.errors)
2696 self.assertLess(len(run.output), 200)
2697 self.assertLess(len(errors(run.errors)), 800)
2699 def test_63811(self):
2700 """ unzzip-big -l $(CVE).zip """
2701 tmpdir = self.testdir()
2702 filename = self.zip_CVE_2018_12
2703 file_url = self.url_CVE_2018_12
2704 download(file_url, filename, tmpdir)
2705 exe = self.bins("unzzip-big")
2706 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2708 self.assertLess(len(run.output), 1)
2709 self.assertLess(len(errors(run.errors)), 1)
2711 def test_63812(self):
2712 """ unzzip-mem -l $(CVE).zip """
2713 tmpdir = self.testdir()
2714 filename = self.zip_CVE_2018_12
2715 file_url = self.url_CVE_2018_12
2716 download(file_url, filename, tmpdir)
2717 exe = self.bins("unzzip-mem")
2718 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2720 self.assertLess(len(run.output), 1)
2721 self.assertLess(len(errors(run.errors)), 1)
2723 @unittest.expectedFailure
2724 def test_63813(self):
2725 """ unzzip-mix -l $(CVE).zip """
2726 tmpdir = self.testdir()
2727 filename = self.zip_CVE_2018_12
2728 file_url = self.url_CVE_2018_12
2729 download(file_url, filename, tmpdir)
2730 exe = self.bins("unzzip-mix")
2731 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2733 self.assertLess(len(run.output), 1)
2734 self.assertLess(len(errors(run.errors)), 1)
2736 def test_63814(self):
2737 """ unzzip-zap -l $(CVE).zip """
2738 tmpdir = self.testdir()
2739 filename = self.zip_CVE_2018_12
2740 file_url = self.url_CVE_2018_12
2741 download(file_url, filename, tmpdir)
2742 exe = self.bins("unzzip")
2743 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2744 returncodes = [0, 255])
2745 self.assertLess(len(run.output), 1)
2746 self.assertLess(len(errors(run.errors)), 200)
2747 self.assertIn(": Success", run.errors)
2749 def test_63815(self):
2750 """ info unzip $(CVE).zip """
2751 tmpdir = self.testdir()
2752 filename = self.zip_CVE_2018_12
2753 file_url = self.url_CVE_2018_12
2754 download(file_url, filename, tmpdir)
2755 exe = self.bins("unzip")
2756 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
2758 self.assertLess(len(run.output), 200)
2759 self.assertLess(len(errors(run.errors)), 800)
2760 self.assertIn('End-of-central-directory signature not found', run.errors)
2761 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2762 self.assertFalse(os.path.exists(tmpdir+"/test"))
2764 def test_63816(self):
2765 """ unzzip-big $(CVE).zip """
2766 tmpdir = self.testdir()
2767 filename = self.zip_CVE_2018_12
2768 file_url = self.url_CVE_2018_12
2769 download(file_url, filename, tmpdir)
2770 exe = self.bins("unzzip-big")
2771 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2773 self.assertLess(len(run.output), 30)
2774 self.assertLess(len(errors(run.errors)), 1)
2775 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2776 self.assertFalse(os.path.exists(tmpdir+"/test"))
2778 def test_63817(self):
2779 """ unzzip-mem $(CVE).zip """
2780 tmpdir = self.testdir()
2781 filename = self.zip_CVE_2018_12
2782 file_url = self.url_CVE_2018_12
2783 download(file_url, filename, tmpdir)
2784 exe = self.bins("unzzip-mem")
2785 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2787 self.assertLess(len(run.output), 30)
2788 self.assertLess(len(errors(run.errors)), 10)
2789 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2790 self.assertFalse(os.path.exists(tmpdir+"/test"))
2792 @unittest.expectedFailure
2793 def test_63818(self):
2794 """ unzzip-mix $(CVE).zip """
2795 tmpdir = self.testdir()
2796 filename = self.zip_CVE_2018_12
2797 file_url = self.url_CVE_2018_12
2798 download(file_url, filename, tmpdir)
2799 exe = self.bins("unzzip-mix")
2800 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2802 self.assertLess(len(run.output), 30)
2803 self.assertLess(len(errors(run.errors)), 10)
2804 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2805 self.assertFalse(os.path.exists(tmpdir+"/test"))
2807 @unittest.expectedFailure
2808 def test_63819(self):
2809 """ unzzip $(CVE).zip """
2810 tmpdir = self.testdir()
2811 filename = self.zip_CVE_2018_12
2812 file_url = self.url_CVE_2018_12
2813 download(file_url, filename, tmpdir)
2814 exe = self.bins("unzzip")
2815 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2817 self.assertLess(len(run.output), 30)
2818 self.assertLess(len(errors(run.errors)), 10)
2819 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2820 self.assertFalse(os.path.exists(tmpdir+"/test"))
2823 url_CVE_2018_14 = "https://github.com/ProbeFuzzer/poc/blob/master/zziplib"
2824 zip_CVE_2018_14 = "zziplib_0-13-67_zzdir_memory-alignment-errors___zzip_fetch_disk_trailer.zip"
2825 def test_64840(self):
2826 """ info unzip -l $(CVE).zip """
2827 tmpdir = self.testdir()
2828 filename = self.zip_CVE_2018_14
2829 file_url = self.url_CVE_2018_14
2830 download(file_url, filename, tmpdir)
2831 exe = self.bins("unzip")
2832 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2833 returncodes = [0, 9])
2834 self.assertIn("End-of-central-directory signature not found", run.errors)
2835 self.assertLess(len(run.output), 200)
2836 self.assertLess(len(errors(run.errors)), 800)
2838 def test_64841(self):
2839 """ unzzip-big -l $(CVE).zip """
2840 tmpdir = self.testdir()
2841 filename = self.zip_CVE_2018_14
2842 file_url = self.url_CVE_2018_14
2843 download(file_url, filename, tmpdir)
2844 exe = self.bins("unzzip-big")
2845 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2847 self.assertLess(len(run.output), 1)
2848 self.assertLess(len(errors(run.errors)), 1)
2850 def test_64842(self):
2851 """ unzzip-mem -l $(CVE).zip """
2852 tmpdir = self.testdir()
2853 filename = self.zip_CVE_2018_14
2854 file_url = self.url_CVE_2018_14
2855 download(file_url, filename, tmpdir)
2856 exe = self.bins("unzzip-mem")
2857 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2859 self.assertLess(len(run.output), 1)
2861 def test_64843(self):
2862 """ unzzip-mix -l $(CVE).zip """
2863 tmpdir = self.testdir()
2864 filename = self.zip_CVE_2018_14
2865 file_url = self.url_CVE_2018_14
2866 download(file_url, filename, tmpdir)
2867 exe = self.bins("unzzip-mix")
2868 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2869 returncodes = [0, 2])
2870 self.assertLess(len(run.output), 1)
2871 self.assertTrue(greps(run.errors, "central directory not found"))
2873 def test_64844(self):
2874 """ unzzip-zap -l $(CVE).zip """
2875 tmpdir = self.testdir()
2876 filename = self.zip_CVE_2018_14
2877 file_url = self.url_CVE_2018_14
2878 download(file_url, filename, tmpdir)
2879 exe = self.bins("unzzip")
2880 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2881 returncodes = [0, 3])
2882 self.assertLess(len(run.output), 1)
2883 self.assertLess(len(errors(run.errors)), 200)
2884 self.assertIn(": Success", run.errors)
2886 def test_64845(self):
2887 """ info unzip $(CVE).zip """
2888 tmpdir = self.testdir()
2889 filename = self.zip_CVE_2018_14
2890 file_url = self.url_CVE_2018_14
2891 download(file_url, filename, tmpdir)
2892 exe = self.bins("unzip")
2893 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
2895 self.assertLess(len(run.output), 200)
2896 self.assertLess(len(errors(run.errors)), 800)
2897 self.assertIn('End-of-central-directory signature not found', run.errors)
2898 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2899 self.assertFalse(os.path.exists(tmpdir+"/test"))
2901 def test_64846(self):
2902 """ unzzip-big $(CVE).zip """
2903 tmpdir = self.testdir()
2904 filename = self.zip_CVE_2018_14
2905 file_url = self.url_CVE_2018_14
2906 download(file_url, filename, tmpdir)
2907 exe = self.bins("unzzip-big")
2908 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2910 self.assertLess(len(run.output), 30)
2911 self.assertLess(len(errors(run.errors)), 1)
2912 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2913 self.assertFalse(os.path.exists(tmpdir+"/test"))
2915 def test_64847(self):
2916 """ unzzip-mem $(CVE).zip """
2917 tmpdir = self.testdir()
2918 filename = self.zip_CVE_2018_14
2919 file_url = self.url_CVE_2018_14
2920 download(file_url, filename, tmpdir)
2921 exe = self.bins("unzzip-mem")
2922 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2924 self.assertLess(len(run.output), 30)
2925 self.assertLess(len(errors(run.errors)), 10)
2926 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2927 self.assertFalse(os.path.exists(tmpdir+"/test"))
2929 def test_64848(self):
2930 """ unzzip-mix $(CVE).zip """
2931 tmpdir = self.testdir()
2932 filename = self.zip_CVE_2018_14
2933 file_url = self.url_CVE_2018_14
2934 download(file_url, filename, tmpdir)
2935 exe = self.bins("unzzip-mix")
2936 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2937 returncodes = [0,2])
2938 self.assertLess(len(run.output), 30)
2939 self.assertLess(len(errors(run.errors)), 10)
2940 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2941 self.assertFalse(os.path.exists(tmpdir+"/test"))
2943 def test_64849(self):
2944 """ unzzip $(CVE).zip """
2945 tmpdir = self.testdir()
2946 filename = self.zip_CVE_2018_14
2947 file_url = self.url_CVE_2018_14
2948 download(file_url, filename, tmpdir)
2949 exe = self.bins("unzzip")
2950 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
2951 returncodes = [0,3])
2952 self.assertLess(len(run.output), 30)
2953 self.assertLess(len(errors(run.errors)), 10)
2954 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
2955 self.assertFalse(os.path.exists(tmpdir+"/test"))
2958 url_CVE_2018_15 = "https://github.com/ProbeFuzzer/poc/blob/master/zziplib"
2959 zip_CVE_2018_15 = "zziplib_0-13-67_unzip-mem_memory-alignment-errors_zzip_disk_findfirst.zip"
2960 def test_65400(self):
2961 """ info unzip -l $(CVE).zip """
2962 tmpdir = self.testdir()
2963 filename = self.zip_CVE_2018_15
2964 file_url = self.url_CVE_2018_15
2965 download(file_url, filename, tmpdir)
2966 exe = self.bins("unzip")
2967 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2968 returncodes = [0, 9])
2969 self.assertIn("End-of-central-directory signature not found", run.errors)
2970 self.assertLess(len(run.output), 200)
2971 self.assertLess(len(errors(run.errors)), 800)
2973 def test_65401(self):
2974 """ unzzip-big -l $(CVE).zip """
2975 tmpdir = self.testdir()
2976 filename = self.zip_CVE_2018_15
2977 file_url = self.url_CVE_2018_15
2978 download(file_url, filename, tmpdir)
2979 exe = self.bins("unzzip-big")
2980 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2982 self.assertLess(len(run.output), 1)
2983 self.assertLess(len(errors(run.errors)), 1)
2985 def test_65402(self):
2986 """ unzzip-mem -l $(CVE).zip """
2987 tmpdir = self.testdir()
2988 filename = self.zip_CVE_2018_15
2989 file_url = self.url_CVE_2018_15
2990 download(file_url, filename, tmpdir)
2991 exe = self.bins("unzzip-mem")
2992 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
2994 self.assertLess(len(run.output), 1)
2995 self.assertLess(len(errors(run.errors)), 1)
2997 def test_65403(self):
2998 """ unzzip-mix -l $(CVE).zip """
2999 tmpdir = self.testdir()
3000 filename = self.zip_CVE_2018_15
3001 file_url = self.url_CVE_2018_15
3002 download(file_url, filename, tmpdir)
3003 exe = self.bins("unzzip-mix")
3004 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3005 returncodes = [0,2])
3006 self.assertLess(len(run.output), 1)
3007 self.assertTrue(grep(run.errors, "central directory not found"))
3009 def test_65404(self):
3010 """ unzzip-zap -l $(CVE).zip """
3011 tmpdir = self.testdir()
3012 filename = self.zip_CVE_2018_15
3013 file_url = self.url_CVE_2018_15
3014 download(file_url, filename, tmpdir)
3015 exe = self.bins("unzzip")
3016 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3017 returncodes = [0, 3])
3018 self.assertLess(len(run.output), 1)
3019 self.assertLess(len(errors(run.errors)), 200)
3020 self.assertIn(": Success", run.errors)
3022 def test_65405(self):
3023 """ info unzip $(CVE).zip """
3024 tmpdir = self.testdir()
3025 filename = self.zip_CVE_2018_15
3026 file_url = self.url_CVE_2018_15
3027 download(file_url, filename, tmpdir)
3028 exe = self.bins("unzip")
3029 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
3031 self.assertLess(len(run.output), 200)
3032 self.assertLess(len(errors(run.errors)), 800)
3033 self.assertIn('End-of-central-directory signature not found', run.errors)
3034 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3035 self.assertFalse(os.path.exists(tmpdir+"/test"))
3037 def test_65406(self):
3038 """ unzzip-big $(CVE).zip """
3039 tmpdir = self.testdir()
3040 filename = self.zip_CVE_2018_15
3041 file_url = self.url_CVE_2018_15
3042 download(file_url, filename, tmpdir)
3043 exe = self.bins("unzzip-big")
3044 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3046 self.assertLess(len(run.output), 30)
3047 self.assertLess(len(errors(run.errors)), 1)
3048 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3049 self.assertFalse(os.path.exists(tmpdir+"/test"))
3051 def test_65407(self):
3052 """ unzzip-mem $(CVE).zip """
3053 tmpdir = self.testdir()
3054 filename = self.zip_CVE_2018_15
3055 file_url = self.url_CVE_2018_15
3056 download(file_url, filename, tmpdir)
3057 exe = self.bins("unzzip-mem")
3058 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3060 self.assertLess(len(run.output), 30)
3061 self.assertLess(len(errors(run.errors)), 10)
3062 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3063 self.assertFalse(os.path.exists(tmpdir+"/test"))
3065 def test_65408(self):
3066 """ unzzip-mix $(CVE).zip """
3067 tmpdir = self.testdir()
3068 filename = self.zip_CVE_2018_15
3069 file_url = self.url_CVE_2018_15
3070 download(file_url, filename, tmpdir)
3071 exe = self.bins("unzzip-mix")
3072 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3073 returncodes = [0,2])
3074 self.assertLess(len(run.output), 30)
3075 self.assertLess(len(errors(run.errors)), 10)
3076 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3077 self.assertFalse(os.path.exists(tmpdir+"/test"))
3079 def test_65409(self):
3080 """ unzzip $(CVE).zip """
3081 tmpdir = self.testdir()
3082 filename = self.zip_CVE_2018_15
3083 file_url = self.url_CVE_2018_15
3084 download(file_url, filename, tmpdir)
3085 exe = self.bins("unzzip")
3086 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3087 returncodes = [0,3])
3088 self.assertLess(len(run.output), 30)
3089 self.assertLess(len(errors(run.errors)), 10)
3090 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3091 self.assertFalse(os.path.exists(tmpdir+"/test"))
3094 url_CVE_2018_16 = "https://github.com/ProbeFuzzer/poc/blob/master/zziplib"
3095 zip_CVE_2018_16 = "zziplib_0-13-67_unzzip_memory-aligment-errors___zzip_fetch_disk_trailer.zip"
3096 def test_65410(self):
3097 """ info unzip -l $(CVE).zip """
3098 tmpdir = self.testdir()
3099 filename = self.zip_CVE_2018_16
3100 file_url = self.url_CVE_2018_16
3101 download(file_url, filename, tmpdir)
3102 exe = self.bins("unzip")
3103 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3104 returncodes = [0, 9])
3105 self.assertIn("End-of-central-directory signature not found", run.errors)
3106 self.assertLess(len(run.output), 200)
3107 self.assertLess(len(errors(run.errors)), 800)
3109 def test_65411(self):
3110 """ unzzip-big -l $(CVE).zip """
3111 tmpdir = self.testdir()
3112 filename = self.zip_CVE_2018_16
3113 file_url = self.url_CVE_2018_16
3114 download(file_url, filename, tmpdir)
3115 exe = self.bins("unzzip-big")
3116 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3118 self.assertLess(len(run.output), 1)
3119 self.assertLess(len(errors(run.errors)), 1)
3121 def test_65412(self):
3122 """ unzzip-mem -l $(CVE).zip """
3123 tmpdir = self.testdir()
3124 filename = self.zip_CVE_2018_16
3125 file_url = self.url_CVE_2018_16
3126 download(file_url, filename, tmpdir)
3127 exe = self.bins("unzzip-mem")
3128 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3130 self.assertLess(len(run.output), 1)
3131 self.assertLess(len(errors(run.errors)), 1)
3133 def test_65413(self):
3134 """ unzzip-mix -l $(CVE).zip """
3135 tmpdir = self.testdir()
3136 filename = self.zip_CVE_2018_16
3137 file_url = self.url_CVE_2018_16
3138 download(file_url, filename, tmpdir)
3139 exe = self.bins("unzzip-mix")
3140 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3141 returncodes = [0,2])
3142 self.assertLess(len(run.output), 1)
3143 self.assertTrue(grep(run.errors, "central directory not found"))
3145 def test_65414(self):
3146 """ unzzip-zap -l $(CVE).zip """
3147 tmpdir = self.testdir()
3148 filename = self.zip_CVE_2018_16
3149 file_url = self.url_CVE_2018_16
3150 download(file_url, filename, tmpdir)
3151 exe = self.bins("unzzip")
3152 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3153 returncodes = [0, 3])
3154 self.assertLess(len(run.output), 1)
3155 self.assertLess(len(errors(run.errors)), 200)
3156 self.assertIn(": Success", run.errors)
3158 def test_65415(self):
3159 """ info unzip $(CVE).zip """
3160 tmpdir = self.testdir()
3161 filename = self.zip_CVE_2018_16
3162 file_url = self.url_CVE_2018_16
3163 download(file_url, filename, tmpdir)
3164 exe = self.bins("unzip")
3165 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
3167 self.assertLess(len(run.output), 200)
3168 self.assertLess(len(errors(run.errors)), 800)
3169 self.assertIn('End-of-central-directory signature not found', run.errors)
3170 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3171 self.assertFalse(os.path.exists(tmpdir+"/test"))
3173 def test_65416(self):
3174 """ unzzip-big $(CVE).zip """
3175 tmpdir = self.testdir()
3176 filename = self.zip_CVE_2018_16
3177 file_url = self.url_CVE_2018_16
3178 download(file_url, filename, tmpdir)
3179 exe = self.bins("unzzip-big")
3180 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3182 self.assertLess(len(run.output), 30)
3183 self.assertLess(len(errors(run.errors)), 1)
3184 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3185 self.assertFalse(os.path.exists(tmpdir+"/test"))
3187 def test_65417(self):
3188 """ unzzip-mem $(CVE).zip """
3189 tmpdir = self.testdir()
3190 filename = self.zip_CVE_2018_16
3191 file_url = self.url_CVE_2018_16
3192 download(file_url, filename, tmpdir)
3193 exe = self.bins("unzzip-mem")
3194 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3196 self.assertLess(len(run.output), 30)
3197 self.assertLess(len(errors(run.errors)), 10)
3198 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3199 self.assertFalse(os.path.exists(tmpdir+"/test"))
3201 def test_65418(self):
3202 """ unzzip-mix $(CVE).zip """
3203 tmpdir = self.testdir()
3204 filename = self.zip_CVE_2018_16
3205 file_url = self.url_CVE_2018_16
3206 download(file_url, filename, tmpdir)
3207 exe = self.bins("unzzip-mix")
3208 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3209 returncodes = [0,2])
3210 self.assertLess(len(run.output), 30)
3211 self.assertLess(len(errors(run.errors)), 10)
3212 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3213 self.assertFalse(os.path.exists(tmpdir+"/test"))
3215 def test_65419(self):
3216 """ unzzip $(CVE).zip """
3217 tmpdir = self.testdir()
3218 filename = self.zip_CVE_2018_16
3219 file_url = self.url_CVE_2018_16
3220 download(file_url, filename, tmpdir)
3221 exe = self.bins("unzzip")
3222 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3223 returncodes = [0,3])
3224 self.assertLess(len(run.output), 30)
3225 self.assertLess(len(errors(run.errors)), 10)
3226 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3227 self.assertFalse(os.path.exists(tmpdir+"/test"))
3230 url_CVE_2018_17 = "https://github.com/ProbeFuzzer/poc/blob/master/zziplib"
3231 zip_CVE_2018_17 = "zziplib_0-13-67_unzip-mem_memory-alignment-errors_zzip_disk_findfirst_64.zip"
3232 def test_65420(self):
3233 """ info unzip -l $(CVE).zip """
3234 tmpdir = self.testdir()
3235 filename = self.zip_CVE_2018_17
3236 file_url = self.url_CVE_2018_17
3237 download(file_url, filename, tmpdir)
3238 exe = self.bins("unzip")
3239 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3240 returncodes = [0, 9])
3241 self.assertIn("End-of-central-directory signature not found", run.errors)
3242 self.assertLess(len(run.output), 200)
3243 self.assertLess(len(errors(run.errors)), 800)
3245 def test_65421(self):
3246 """ unzzip-big -l $(CVE).zip """
3247 tmpdir = self.testdir()
3248 filename = self.zip_CVE_2018_17
3249 file_url = self.url_CVE_2018_17
3250 download(file_url, filename, tmpdir)
3251 exe = self.bins("unzzip-big")
3252 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3254 self.assertLess(len(run.output), 1)
3255 self.assertTrue(grep(run.errors, "central directory not found"))
3257 def test_65422(self):
3258 """ unzzip-mem -l $(CVE).zip """
3259 tmpdir = self.testdir()
3260 filename = self.zip_CVE_2018_17
3261 file_url = self.url_CVE_2018_17
3262 download(file_url, filename, tmpdir)
3263 exe = self.bins("unzzip-mem")
3264 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3266 self.assertLess(len(run.output), 1)
3267 self.assertLess(len(errors(run.errors)), 1)
3269 def test_65423(self):
3270 """ unzzip-mix -l $(CVE).zip """
3271 tmpdir = self.testdir()
3272 filename = self.zip_CVE_2018_17
3273 file_url = self.url_CVE_2018_17
3274 download(file_url, filename, tmpdir)
3275 exe = self.bins("unzzip-mix")
3276 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3277 returncodes = [0,2])
3278 self.assertLess(len(run.output), 1)
3279 self.assertTrue(grep(run.errors, "central directory not found"))
3281 def test_65424(self):
3282 """ unzzip-zap -l $(CVE).zip """
3283 tmpdir = self.testdir()
3284 filename = self.zip_CVE_2018_17
3285 file_url = self.url_CVE_2018_17
3286 download(file_url, filename, tmpdir)
3287 exe = self.bins("unzzip")
3288 run = shell("{exe} -l {tmpdir}/{filename} ".format(**locals()),
3289 returncodes = [0, 3])
3290 self.assertLess(len(run.output), 1)
3291 self.assertLess(len(errors(run.errors)), 200)
3292 self.assertIn(": Success", run.errors)
3294 def test_65425(self):
3295 """ info unzip $(CVE).zip """
3296 tmpdir = self.testdir()
3297 filename = self.zip_CVE_2018_17
3298 file_url = self.url_CVE_2018_17
3299 download(file_url, filename, tmpdir)
3300 exe = self.bins("unzip")
3301 run = shell("cd {tmpdir} && {exe} -o {filename}".format(**locals()),
3303 self.assertLess(len(run.output), 200)
3304 self.assertLess(len(errors(run.errors)), 800)
3305 self.assertIn('End-of-central-directory signature not found', run.errors)
3306 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3307 self.assertFalse(os.path.exists(tmpdir+"/test"))
3309 def test_65426(self):
3310 """ unzzip-big $(CVE).zip """
3311 tmpdir = self.testdir()
3312 filename = self.zip_CVE_2018_17
3313 file_url = self.url_CVE_2018_17
3314 download(file_url, filename, tmpdir)
3315 exe = self.bins("unzzip-big")
3316 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3318 self.assertLess(len(run.output), 30)
3319 self.assertLess(len(errors(run.errors)), 1)
3320 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3321 self.assertFalse(os.path.exists(tmpdir+"/test"))
3323 def test_65427(self):
3324 """ unzzip-mem $(CVE).zip """
3325 tmpdir = self.testdir()
3326 filename = self.zip_CVE_2018_17
3327 file_url = self.url_CVE_2018_17
3328 download(file_url, filename, tmpdir)
3329 exe = self.bins("unzzip-mem")
3330 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3332 self.assertLess(len(run.output), 30)
3333 self.assertLess(len(errors(run.errors)), 10)
3334 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3335 self.assertFalse(os.path.exists(tmpdir+"/test"))
3337 def test_65428(self):
3338 """ unzzip-mix $(CVE).zip """
3339 tmpdir = self.testdir()
3340 filename = self.zip_CVE_2018_17
3341 file_url = self.url_CVE_2018_17
3342 download(file_url, filename, tmpdir)
3343 exe = self.bins("unzzip-mix")
3344 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3345 returncodes = [0,2])
3346 self.assertLess(len(run.output), 30)
3347 self.assertTrue(grep(run.errors, "No medium found"))
3348 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3349 self.assertFalse(os.path.exists(tmpdir+"/test"))
3351 def test_65429(self):
3352 """ unzzip $(CVE).zip """
3353 tmpdir = self.testdir()
3354 filename = self.zip_CVE_2018_17
3355 file_url = self.url_CVE_2018_17
3356 download(file_url, filename, tmpdir)
3357 exe = self.bins("unzzip")
3358 run = shell("cd {tmpdir} && ../{exe} {filename} ".format(**locals()),
3359 returncodes = [0,3])
3360 self.assertLess(len(run.output), 30)
3361 self.assertTrue(grep(run.errors, "central directory not found"))
3362 # self.assertEqual(os.path.getsize(tmpdir+"/test"), 3)
3363 self.assertFalse(os.path.exists(tmpdir+"/test"))
3367 def test_91000_zzshowme_check_sfx(self):
3368 """ create an *.exe that can extract its own zip content """
3369 exe=self.bins("mkzip")
3370 exefile = "tmp.zzshowme" + exeext
3371 libstub = ".libs/zzipself" + exeext
3372 txtfile_name = readme
3373 txtfile = self.src(readme)
3374 # add the extract-stub so we have reserved the size
3375 run = shell("{exe} -0 -j {exefile}.zip {libstub}".format(**locals()))
3376 self.assertFalse(run.returncode)
3377 # add the actual content which may now be compressed
3378 run = shell("{exe} -9 -j {exefile}.zip {txtfile}".format(**locals()))
3379 self.assertFalse(run.returncode)
3380 # rename .zip to .exe and put the extract-stub at the start
3381 shutil.copy(exefile+".zip", exefile)
3382 setstub="./zzipsetstub" + exeext
3383 run = shell("{setstub} {exefile} {libstub}".format(**locals()))
3384 self.assertFalse(run.returncode)
3385 os.chmod(exefile, 0755)
3386 # now ask the new .exe to show some of its own content
3387 run = shell("./{exefile} {txtfile_name}".format(**locals()))
3388 self.assertFalse(run.returncode)
3389 txt = open(txtfile).read()
3390 self.assertEqual(txt.split("\n"), run.output.split("\n"))
3392 def test_99000_make_test1w_zip(self):
3393 """ create a test1w.zip using zzip/write functions. """
3394 exe=self.bins("zzip")
3395 run = shell("{exe} --version".format(**locals()))
3396 if "- NO -" in run.output:
3397 self.skipTest("- NO -D_ZZIP_ENABLE_WRITE")
3399 zipfile=self.testzip()
3400 tmpdir=self.testdir()
3401 exe=self.bins("zzip")
3402 for i in [1,2,3,4,5,6,7,8,9]:
3403 filename = os.path.join(tmpdir,"file.%i" % i)
3404 filetext = "file-%i\n" % i
3405 self.mkfile(filename, filetext)
3406 filename = os.path.join(tmpdir,"README")
3407 filetext = self.readme()
3408 self.mkfile(filename, filetext)
3410 shell("../{exe} ../{zipfile} ??*.* README".format(**locals()), cwd=tmpdir)
3411 self.assertGreater(os.path.getsize(zipfile), 10)
3416 if __name__ == "__main__":
3418 _o = optparse.OptionParser("%prog [options] test_xxx")
3419 _o.add_option("-b", "--topsrcdir", metavar="DIR", default=topsrcdir,
3420 help="path to the top srcdir / unpack directory [%default]")
3421 _o.add_option("-t", "--testdatadir", metavar="DIR", default=testdatadir,
3422 help="path where temporary testdata is created [%default]")
3423 _o.add_option("-Z", "--mkzip", metavar="EXE", default=mkzip,
3424 help="name or path to zip.exe for *.zip creation [%default]")
3425 _o.add_option("-U", "--unzip", metavar="EXE", default=unzip,
3426 help="name or path to unzip.exe to unpack *.zip [%default]")
3427 _o.add_option("-E", "--exeext", metavar="EXT", default=exeext,
3428 help="the executable extension (automake $(EXEEXT)) [%default]")
3429 _o.add_option("--xmlresults", action="store_true", default=False,
3430 help="print output in junit xml testresult format [%default]")
3431 _o.add_option("-v", "--verbose", action="count", default=0,
3432 help="increase logging output [%default]")
3433 opt, args = _o.parse_args()
3434 logging.basicConfig(level = logging.WARNING - 10 * opt.verbose)
3435 topsrcdir = opt.topsrcdir
3436 testdatdir = opt.testdatadir
3440 if not args: args += [ "test_" ]
3441 suite = unittest.TestSuite()
3443 for classname in sorted(list(globals())):
3444 if not classname.endswith("Test"):
3446 testclass = globals()[classname]
3447 for method in sorted(dir(testclass)):
3448 if "*" not in arg: arg += "*"
3449 if arg.startswith("_"): arg = arg[1:]
3450 if matches(method, arg):
3451 suite.addTest(testclass(method))
3452 # TextTestRunner(verbosity=opt.verbose).run(suite)
3455 Runner = xmlrunner.XMLTestRunner
3456 Runner(xmlresults).run(suite)
3458 Runner = unittest.TextTestRunner
3459 Runner(verbosity=opt.verbose).run(suite)