From 24efbb759b781795a4fc3af7c0a19d19704cbbd4 Mon Sep 17 00:00:00 2001 From: Greg Beaver Date: Sun, 11 May 2008 23:03:56 +0000 Subject: [PATCH] simplify phar_get_link_location and increase its coverage to 100% --- ext/phar/tests/tar/files/tinylink.tar | Bin 0 -> 10240 bytes ext/phar/tests/tar/links4.phpt | 19 +++++++++++++++++++ ext/phar/util.c | 9 +++------ 3 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 ext/phar/tests/tar/files/tinylink.tar create mode 100644 ext/phar/tests/tar/links4.phpt diff --git a/ext/phar/tests/tar/files/tinylink.tar b/ext/phar/tests/tar/files/tinylink.tar new file mode 100644 index 0000000000000000000000000000000000000000..741b56c2f5ce39cd58b1cf03d14b865a72aa5aa5 GIT binary patch literal 10240 zcmeIyK?=e!5QX7cdy1SuX40lPk4USlgH*s39r}66hZP;C%lYN`g^JLZlrD=1r2c$bBL6YQY3@J&z&rk`-~7ia=f4U*iu2t9pVOb`zsRHFQUnk{009IL nKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~fyD%#t7k0S literal 0 HcmV?d00001 diff --git a/ext/phar/tests/tar/links4.phpt b/ext/phar/tests/tar/links4.phpt new file mode 100644 index 0000000000..d0783e84ac --- /dev/null +++ b/ext/phar/tests/tar/links4.phpt @@ -0,0 +1,19 @@ +--TEST-- +Phar: tar with link to root directory file from root directory file +--SKIPIF-- + +--FILE-- +getMessage() . "\n"; +} +echo $p['file.txt']->getContent(); +echo $p['link.txt']->getContent(); +?> +===DONE=== +--EXPECT-- +hi +hi +===DONE=== diff --git a/ext/phar/util.c b/ext/phar/util.c index 09258b1f96..0add3b913e 100644 --- a/ext/phar/util.c +++ b/ext/phar/util.c @@ -28,22 +28,19 @@ extern php_stream_wrapper php_stream_phar_wrapper; /* for links to relative location, prepend cwd of the entry */ static char *phar_get_link_location(phar_entry_info *entry TSRMLS_DC) { - char *tmp, *p, *ret = NULL; + char *p, *ret = NULL; if (!entry->link) { return NULL; } if (entry->link[0] == '/') { return estrdup(entry->link + 1); } - tmp = estrndup(entry->filename, entry->filename_len); - p = strrchr(tmp, '/'); + p = strrchr(entry->filename, '/'); if (p) { *p = '\0'; - spprintf(&ret, 0, "%s/%s", tmp, entry->link); - efree(tmp); + spprintf(&ret, 0, "%s/%s", entry->filename, entry->link); return ret; } - efree(ret); return entry->link; } -- 2.40.0