From: Greg Beaver Date: Mon, 21 Apr 2008 06:33:49 +0000 (+0000) Subject: add test for huge filenames, fix huge filename reading X-Git-Tag: RELEASE_2_0_0b1~293 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c4315bfb2bb784a9730755532b53cecec4d562ec;p=php add test for huge filenames, fix huge filename reading --- diff --git a/ext/phar/tar.c b/ext/phar/tar.c index b4cb09d05c..89207f2357 100644 --- a/ext/phar/tar.c +++ b/ext/phar/tar.c @@ -209,7 +209,7 @@ int phar_open_tarfile(php_stream* fp, char *fname, int fname_len, char *alias, i strcpy(name, hdr->prefix); strcat(name, hdr->name); - entry.filename_len = strlen(name); + entry.filename_len = strlen(hdr->prefix) + 100; if (name[entry.filename_len - 1] == '/') { /* some tar programs store directories with trailing slash */ entry.filename_len--; diff --git a/ext/phar/tests/tar/bignames.phpt b/ext/phar/tests/tar/bignames.phpt new file mode 100644 index 0000000000..19d5f638e1 --- /dev/null +++ b/ext/phar/tests/tar/bignames.phpt @@ -0,0 +1,35 @@ +--TEST-- +Phar: tar with huge filenames +--SKIPIF-- + +--FILE-- +getContent() . "\n"; +echo $p2[str_repeat('a', 255)]->getContent() . "\n"; + +try { + $p2[str_repeat('a', 400)] = 'yuck'; +} catch (Exception $e) { + echo $e->getMessage() . "\n"; +} +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +hi +hi2 +tar-based phar "%sbignames.2.tar" cannot be created, filename "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" is too long for tar file format +===DONE===