diff options
author | Anatol Belski <ab@php.net> | 2013-04-10 20:40:28 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2013-04-10 20:40:28 +0200 |
commit | ceb5b684e09df93e6061b1308c91a3d311608cff (patch) | |
tree | 9e08a2b439874bbd030c5966aafd213077512b2d /ext/zip/php_zip.c | |
parent | 442ff25187081212631c03a49041a0529520b505 (diff) | |
parent | 968ae4a56a08587d73f81f30a0d57fbd109e4cf4 (diff) | |
download | php-git-ceb5b684e09df93e6061b1308c91a3d311608cff.tar.gz |
Merge branch 'PHP-5.3' into PHP-5.4
* PHP-5.3:
Fixed bug #64342 ZipArchive::addFile() has to check for file existence
Diffstat (limited to 'ext/zip/php_zip.c')
-rw-r--r-- | ext/zip/php_zip.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index 727cc853ca..0c033d4e46 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -28,6 +28,7 @@ #include "ext/standard/file.h" #include "ext/standard/php_string.h" #include "ext/pcre/php_pcre.h" +#include "ext/standard/php_filestat.h" #include "php_zip.h" #include "lib/zip.h" #include "lib/zipint.h" @@ -300,6 +301,7 @@ static int php_zip_add_file(struct zip *za, const char *filename, size_t filenam struct zip_source *zs; int cur_idx; char resolved_path[MAXPATHLEN]; + zval exists_flag; if (ZIP_OPENBASEDIR_CHECKPATH(filename)) { @@ -310,6 +312,11 @@ static int php_zip_add_file(struct zip *za, const char *filename, size_t filenam return -1; } + php_stat(resolved_path, strlen(resolved_path), FS_EXISTS, &exists_flag TSRMLS_CC); + if (!Z_BVAL(exists_flag)) { + return -1; + } + zs = zip_source_file(za, resolved_path, offset_start, offset_len); if (!zs) { return -1; |