xref: /PHP-8.0/ext/phar/tests/tar/bignames.phpt (revision f8d79582)
1--TEST--
2Phar: tar with huge filenames
3--SKIPIF--
4<?php if (!extension_loaded("phar")) die("skip"); ?>
5--INI--
6phar.require_hash=0
7--FILE--
8<?php
9$fname = __DIR__ . '/' . basename(__FILE__, '.php') . '.tar';
10$fname2 = __DIR__ . '/' . basename(__FILE__, '.php') . '.2.tar';
11$fname3 = __DIR__ . '/' . basename(__FILE__, '.php') . '.3.tar';
12$fname4 = __DIR__ . '/' . basename(__FILE__, '.php') . '.4.tar';
13$pname = 'phar://' . $fname;
14
15$p1 = new PharData($fname);
16$p1[str_repeat('a', 100) . '/b'] = 'hi';
17$p1[str_repeat('a', 155) . '/' . str_repeat('b', 100)] = 'hi2';
18copy($fname, $fname2);
19$p2 = new PharData($fname2);
20echo $p2[str_repeat('a', 100) . '/b']->getContent() . "\n";
21echo $p2[str_repeat('a', 155) . '/' . str_repeat('b', 100)]->getContent() . "\n";
22
23try {
24    $p2[str_repeat('a', 400)] = 'yuck';
25} catch (Exception $e) {
26    echo $e->getMessage() . "\n";
27}
28
29try {
30    $p2 = new PharData($fname3);
31    $p2[str_repeat('a', 101)] = 'yuck';
32} catch (Exception $e) {
33    echo $e->getMessage() . "\n";
34}
35
36try {
37    $p2 = new PharData($fname4);
38    $p2[str_repeat('b', 160) . '/' . str_repeat('a', 90)] = 'yuck';
39} catch (Exception $e) {
40    echo $e->getMessage() . "\n";
41}
42?>
43--CLEAN--
44<?php
45unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.tar');
46unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.2.tar');
47@unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.3.tar');
48@unlink(__DIR__ . '/' . basename(__FILE__, '.clean.php') . '.4.tar');
49?>
50--EXPECTF--
51hi
52hi2
53tar-based phar "%sbignames.2.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format
54tar-based phar "%sbignames.3.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format
55tar-based phar "%sbignames.4.tar" cannot be created, filename "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format
56