cellog Wed, 22 Jul 2009 19:51:37 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=284622
Log: Fix Bug #49020: phar misinterprets ustar long filename standard Bug: http://pecl.php.net/bugs/49020 (unknown) Changed paths: U pecl/phar/trunk/package.php U pecl/phar/trunk/tar.c U pecl/phar/trunk/tests/tar/bignames.phpt U pecl/phar/trunk/tests/tar/bignames_overflow.phpt U php/php-src/branches/PHP_5_3/NEWS U php/php-src/branches/PHP_5_3/ext/phar/tar.c U php/php-src/branches/PHP_5_3/ext/phar/tests/tar/bignames.phpt U php/php-src/branches/PHP_5_3/ext/phar/tests/tar/bignames_overflow.phpt U php/php-src/trunk/ext/phar/tar.c U php/php-src/trunk/ext/phar/tests/tar/bignames.phpt U php/php-src/trunk/ext/phar/tests/tar/bignames_overflow.phpt
Modified: pecl/phar/trunk/package.php =================================================================== --- pecl/phar/trunk/package.php 2009-07-22 18:37:32 UTC (rev 284621) +++ pecl/phar/trunk/package.php 2009-07-22 19:51:37 UTC (rev 284622) @@ -44,6 +44,8 @@ * on conversion to other formats, user-supplied aliases are validated Changes since 2.0.0RC2: + fixed PHP Bug #49018: phar tar stores long filenames with prefix/name reversed + fixed PHP Bug #49020: phar misinterprets ustar long filename standard fixed PHP Bug #48681: openssl signature verification for tar archives broken fixed isset() on sub-directories (isset("blah") if file "blah/foo.php" exists) Changes since 2.0.0RC1: Modified: pecl/phar/trunk/tar.c =================================================================== --- pecl/phar/trunk/tar.c 2009-07-22 18:37:32 UTC (rev 284621) +++ pecl/phar/trunk/tar.c 2009-07-22 19:51:37 UTC (rev 284622) @@ -341,6 +341,7 @@ break; } } + name[i++] = '/'; for (j = 0; j < 100; j++) { name[i+j] = hdr->name[j]; if (name[i+j] == '\0') { @@ -641,14 +642,25 @@ memset((char *) &header, 0, sizeof(header)); if (entry->filename_len > 100) { - if (entry->filename_len > 255) { + char *boundary; + if (entry->filename_len > 256) { if (fp->error) { spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, filename \"%s\" is too long for tar file format", entry->phar->fname, entry->filename); } return ZEND_HASH_APPLY_STOP; } - memcpy(header.prefix, entry->filename, entry->filename_len - 100); - memcpy(header.name, entry->filename + (entry->filename_len - 100), 100); + boundary = entry->filename + entry->filename_len - 101; + while (*boundary && *boundary != '/') { + ++boundary; + } + if (!*boundary || ((boundary - entry->filename) > 155)) { + if (fp->error) { + spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, filename \"%s\" is too long for tar file format", entry->phar->fname, entry->filename); + } + return ZEND_HASH_APPLY_STOP; + } + memcpy(header.prefix, entry->filename, boundary - entry->filename); + memcpy(header.name, boundary + 1, entry->filename_len - (boundary + 1 - entry->filename)); } else { memcpy(header.name, entry->filename, entry->filename_len); } Modified: pecl/phar/trunk/tests/tar/bignames.phpt =================================================================== --- pecl/phar/trunk/tests/tar/bignames.phpt 2009-07-22 18:37:32 UTC (rev 284621) +++ pecl/phar/trunk/tests/tar/bignames.phpt 2009-07-22 19:51:37 UTC (rev 284622) @@ -8,30 +8,50 @@ <?php $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar'; $fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.tar'; +$fname3 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.3.tar'; +$fname4 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.4.tar'; $pname = 'phar://' . $fname; $p1 = new PharData($fname); -$p1[str_repeat('a', 100) . 'b'] = 'hi'; -$p1[str_repeat('a', 255)] = 'hi2'; +$p1[str_repeat('a', 100) . '/b'] = 'hi'; +$p1[str_repeat('a', 155) . '/' . str_repeat('b', 100)] = 'hi2'; copy($fname, $fname2); $p2 = new PharData($fname2); -echo $p2[str_repeat('a', 100) . 'b']->getContent() . "\n"; -echo $p2[str_repeat('a', 255)]->getContent() . "\n"; +echo $p2[str_repeat('a', 100) . '/b']->getContent() . "\n"; +echo $p2[str_repeat('a', 155) . '/' . str_repeat('b', 100)]->getContent() . "\n"; try { $p2[str_repeat('a', 400)] = 'yuck'; } catch (Exception $e) { echo $e->getMessage() . "\n"; } + +try { + $p2 = new PharData($fname3); + $p2[str_repeat('a', 101)] = 'yuck'; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + $p2 = new PharData($fname4); + $p2[str_repeat('b', 160) . '/' . str_repeat('a', 90)] = 'yuck'; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} ?> ===DONE=== --CLEAN-- <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.tar'); unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.tar'); +...@unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.3.tar'); +...@unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.4.tar'); ?> --EXPECTF-- hi hi2 tar-based phar "%sbignames.2.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format +tar-based phar "%sbignames.3.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format +tar-based phar "%sbignames.4.tar" cannot be created, filename "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format ===DONE=== Modified: pecl/phar/trunk/tests/tar/bignames_overflow.phpt =================================================================== --- pecl/phar/trunk/tests/tar/bignames_overflow.phpt 2009-07-22 18:37:32 UTC (rev 284621) +++ pecl/phar/trunk/tests/tar/bignames_overflow.phpt 2009-07-22 19:51:37 UTC (rev 284622) @@ -22,8 +22,8 @@ foreach ($p1 as $file) { echo $file->getFileName(), "\n"; } -echo $p1[str_repeat('a', 101)]->getContent() . "\n"; -echo $p1[str_repeat('a', 255)]->getContent() . "\n"; +echo $p1['a/' . str_repeat('a', 100)]->getContent() . "\n"; +echo $p1[str_repeat('a', 155) . '/' . str_repeat('a', 100)]->getContent() . "\n"; ?> ===DONE=== @@ -33,8 +33,8 @@ unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.tar'); ?> --EXPECT-- -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa hi hi2 ===DONE=== Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2009-07-22 18:37:32 UTC (rev 284621) +++ php/php-src/branches/PHP_5_3/NEWS 2009-07-22 19:51:37 UTC (rev 284622) @@ -6,6 +6,8 @@ - Fixed open_basedir circumvention for mail.log. (Maksymilian Arciemowicz, Stas) +- Fixed bug #49020 (phar misinterprets ustar long filename standard). + (Greg) - Fixed bug #49018 (phar tar stores long filenames wit prefix/name reversed). (Greg) - Fixed bug #48962 (cURL does not upload files with specified filename). Modified: php/php-src/branches/PHP_5_3/ext/phar/tar.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/phar/tar.c 2009-07-22 18:37:32 UTC (rev 284621) +++ php/php-src/branches/PHP_5_3/ext/phar/tar.c 2009-07-22 19:51:37 UTC (rev 284622) @@ -341,6 +341,7 @@ break; } } + name[i++] = '/'; for (j = 0; j < 100; j++) { name[i+j] = hdr->name[j]; if (name[i+j] == '\0') { @@ -641,14 +642,25 @@ memset((char *) &header, 0, sizeof(header)); if (entry->filename_len > 100) { - if (entry->filename_len > 255) { + char *boundary; + if (entry->filename_len > 256) { if (fp->error) { spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, filename \"%s\" is too long for tar file format", entry->phar->fname, entry->filename); } return ZEND_HASH_APPLY_STOP; } - memcpy(header.prefix, entry->filename, entry->filename_len - 100); - memcpy(header.name, entry->filename + (entry->filename_len - 100), 100); + boundary = entry->filename + entry->filename_len - 101; + while (*boundary && *boundary != '/') { + ++boundary; + } + if (!*boundary || ((boundary - entry->filename) > 155)) { + if (fp->error) { + spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, filename \"%s\" is too long for tar file format", entry->phar->fname, entry->filename); + } + return ZEND_HASH_APPLY_STOP; + } + memcpy(header.prefix, entry->filename, boundary - entry->filename); + memcpy(header.name, boundary + 1, entry->filename_len - (boundary + 1 - entry->filename)); } else { memcpy(header.name, entry->filename, entry->filename_len); } Modified: php/php-src/branches/PHP_5_3/ext/phar/tests/tar/bignames.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/phar/tests/tar/bignames.phpt 2009-07-22 18:37:32 UTC (rev 284621) +++ php/php-src/branches/PHP_5_3/ext/phar/tests/tar/bignames.phpt 2009-07-22 19:51:37 UTC (rev 284622) @@ -8,30 +8,50 @@ <?php $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar'; $fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.tar'; +$fname3 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.3.tar'; +$fname4 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.4.tar'; $pname = 'phar://' . $fname; $p1 = new PharData($fname); -$p1[str_repeat('a', 100) . 'b'] = 'hi'; -$p1[str_repeat('a', 255)] = 'hi2'; +$p1[str_repeat('a', 100) . '/b'] = 'hi'; +$p1[str_repeat('a', 155) . '/' . str_repeat('b', 100)] = 'hi2'; copy($fname, $fname2); $p2 = new PharData($fname2); -echo $p2[str_repeat('a', 100) . 'b']->getContent() . "\n"; -echo $p2[str_repeat('a', 255)]->getContent() . "\n"; +echo $p2[str_repeat('a', 100) . '/b']->getContent() . "\n"; +echo $p2[str_repeat('a', 155) . '/' . str_repeat('b', 100)]->getContent() . "\n"; try { $p2[str_repeat('a', 400)] = 'yuck'; } catch (Exception $e) { echo $e->getMessage() . "\n"; } + +try { + $p2 = new PharData($fname3); + $p2[str_repeat('a', 101)] = 'yuck'; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + $p2 = new PharData($fname4); + $p2[str_repeat('b', 160) . '/' . str_repeat('a', 90)] = 'yuck'; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} ?> ===DONE=== --CLEAN-- <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.tar'); unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.tar'); +...@unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.3.tar'); +...@unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.4.tar'); ?> --EXPECTF-- hi hi2 tar-based phar "%sbignames.2.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format +tar-based phar "%sbignames.3.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format +tar-based phar "%sbignames.4.tar" cannot be created, filename "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format ===DONE=== Modified: php/php-src/branches/PHP_5_3/ext/phar/tests/tar/bignames_overflow.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/phar/tests/tar/bignames_overflow.phpt 2009-07-22 18:37:32 UTC (rev 284621) +++ php/php-src/branches/PHP_5_3/ext/phar/tests/tar/bignames_overflow.phpt 2009-07-22 19:51:37 UTC (rev 284622) @@ -22,8 +22,8 @@ foreach ($p1 as $file) { echo $file->getFileName(), "\n"; } -echo $p1[str_repeat('a', 101)]->getContent() . "\n"; -echo $p1[str_repeat('a', 255)]->getContent() . "\n"; +echo $p1['a/' . str_repeat('a', 100)]->getContent() . "\n"; +echo $p1[str_repeat('a', 155) . '/' . str_repeat('a', 100)]->getContent() . "\n"; ?> ===DONE=== @@ -33,8 +33,8 @@ unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.tar'); ?> --EXPECT-- -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa hi hi2 ===DONE=== Modified: php/php-src/trunk/ext/phar/tar.c =================================================================== --- php/php-src/trunk/ext/phar/tar.c 2009-07-22 18:37:32 UTC (rev 284621) +++ php/php-src/trunk/ext/phar/tar.c 2009-07-22 19:51:37 UTC (rev 284622) @@ -341,6 +341,7 @@ break; } } + name[i++] = '/'; for (j = 0; j < 100; j++) { name[i+j] = hdr->name[j]; if (name[i+j] == '\0') { @@ -641,14 +642,25 @@ memset((char *) &header, 0, sizeof(header)); if (entry->filename_len > 100) { - if (entry->filename_len > 255) { + char *boundary; + if (entry->filename_len > 256) { if (fp->error) { spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, filename \"%s\" is too long for tar file format", entry->phar->fname, entry->filename); } return ZEND_HASH_APPLY_STOP; } - memcpy(header.prefix, entry->filename, entry->filename_len - 100); - memcpy(header.name, entry->filename + (entry->filename_len - 100), 100); + boundary = entry->filename + entry->filename_len - 101; + while (*boundary && *boundary != '/') { + ++boundary; + } + if (!*boundary || ((boundary - entry->filename) > 155)) { + if (fp->error) { + spprintf(fp->error, 4096, "tar-based phar \"%s\" cannot be created, filename \"%s\" is too long for tar file format", entry->phar->fname, entry->filename); + } + return ZEND_HASH_APPLY_STOP; + } + memcpy(header.prefix, entry->filename, boundary - entry->filename); + memcpy(header.name, boundary + 1, entry->filename_len - (boundary + 1 - entry->filename)); } else { memcpy(header.name, entry->filename, entry->filename_len); } Modified: php/php-src/trunk/ext/phar/tests/tar/bignames.phpt =================================================================== --- php/php-src/trunk/ext/phar/tests/tar/bignames.phpt 2009-07-22 18:37:32 UTC (rev 284621) +++ php/php-src/trunk/ext/phar/tests/tar/bignames.phpt 2009-07-22 19:51:37 UTC (rev 284622) @@ -8,30 +8,50 @@ <?php $fname = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.tar'; $fname2 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.2.tar'; +$fname3 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.3.tar'; +$fname4 = dirname(__FILE__) . '/' . basename(__FILE__, '.php') . '.4.tar'; $pname = 'phar://' . $fname; $p1 = new PharData($fname); -$p1[str_repeat('a', 100) . 'b'] = 'hi'; -$p1[str_repeat('a', 255)] = 'hi2'; +$p1[str_repeat('a', 100) . '/b'] = 'hi'; +$p1[str_repeat('a', 155) . '/' . str_repeat('b', 100)] = 'hi2'; copy($fname, $fname2); $p2 = new PharData($fname2); -echo $p2[str_repeat('a', 100) . 'b']->getContent() . "\n"; -echo $p2[str_repeat('a', 255)]->getContent() . "\n"; +echo $p2[str_repeat('a', 100) . '/b']->getContent() . "\n"; +echo $p2[str_repeat('a', 155) . '/' . str_repeat('b', 100)]->getContent() . "\n"; try { $p2[str_repeat('a', 400)] = 'yuck'; } catch (Exception $e) { echo $e->getMessage() . "\n"; } + +try { + $p2 = new PharData($fname3); + $p2[str_repeat('a', 101)] = 'yuck'; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} + +try { + $p2 = new PharData($fname4); + $p2[str_repeat('b', 160) . '/' . str_repeat('a', 90)] = 'yuck'; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} ?> ===DONE=== --CLEAN-- <?php unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.tar'); unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.tar'); +...@unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.3.tar'); +...@unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.4.tar'); ?> --EXPECTF-- hi hi2 tar-based phar "%sbignames.2.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format +tar-based phar "%sbignames.3.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format +tar-based phar "%sbignames.4.tar" cannot be created, filename "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format ===DONE=== Modified: php/php-src/trunk/ext/phar/tests/tar/bignames_overflow.phpt =================================================================== --- php/php-src/trunk/ext/phar/tests/tar/bignames_overflow.phpt 2009-07-22 18:37:32 UTC (rev 284621) +++ php/php-src/trunk/ext/phar/tests/tar/bignames_overflow.phpt 2009-07-22 19:51:37 UTC (rev 284622) @@ -22,8 +22,8 @@ foreach ($p1 as $file) { echo $file->getFileName(), "\n"; } -echo $p1[str_repeat('a', 101)]->getContent() . "\n"; -echo $p1[str_repeat('a', 255)]->getContent() . "\n"; +echo $p1['a/' . str_repeat('a', 100)]->getContent() . "\n"; +echo $p1[str_repeat('a', 155) . '/' . str_repeat('a', 100)]->getContent() . "\n"; ?> ===DONE=== @@ -33,8 +33,8 @@ unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.2.tar'); ?> --EXPECT-- -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa hi hi2 ===DONE===
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php