]> granicus.if.org Git - php/commitdiff
new test for corrupted tar with hard link to nowhere
authorGreg Beaver <cellog@php.net>
Mon, 21 Apr 2008 06:21:09 +0000 (06:21 +0000)
committerGreg Beaver <cellog@php.net>
Mon, 21 Apr 2008 06:21:09 +0000 (06:21 +0000)
ext/phar/tests/tar/links2.phpt [new file with mode: 0644]

diff --git a/ext/phar/tests/tar/links2.phpt b/ext/phar/tests/tar/links2.phpt
new file mode 100644 (file)
index 0000000..1939e00
--- /dev/null
@@ -0,0 +1,35 @@
+--TEST--
+Phar: tar with hard link to nowhere
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--FILE--
+<?php
+$fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar';
+$pname = 'phar://' . $fname;
+
+include dirname(__FILE__) . '/files/corrupt_tarmaker.php.inc';
+$a = new corrupt_tarmaker($fname, 'none');
+$a->init();
+$a->addFile('hardlink', 'internal/file.txt', array(
+                    'mode' => 0xA000 + 0644,
+                    'uid' => 0,
+                    'gid' => 0,
+                    'size' => 0,
+                    'mtime' => time(),
+                ));
+$a->close();
+
+try {
+       $p = new PharData($fname);
+} catch (Exception $e) {
+       echo $e->getMessage() . "\n";
+}
+?>
+===DONE===
+--CLEAN--
+<?php
+unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.tar');
+?>
+--EXPECTF--
+phar error: "%slinks2.tar" is a corrupted tar file - hard link to non-existent file "internal/file.txt"
+===DONE===