sfox Mon Jul 7 01:11:08 2008 UTC
Modified files: (Branch: PHP_5_3)
/php-src/ext/phar phar_object.c
Log:
- We forgot to check that the phar exists before trying to extract files from
it :)
http://cvs.php.net/viewvc.cgi/php-src/ext/phar/phar_object.c?r1=1.266.2.32&r2=1.266.2.33&diff_format=u
Index: php-src/ext/phar/phar_object.c
diff -u php-src/ext/phar/phar_object.c:1.266.2.32
php-src/ext/phar/phar_object.c:1.266.2.33
--- php-src/ext/phar/phar_object.c:1.266.2.32 Tue Jun 24 01:11:27 2008
+++ php-src/ext/phar/phar_object.c Mon Jul 7 01:11:07 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: phar_object.c,v 1.266.2.32 2008/06/24 01:11:27 cellog Exp $ */
+/* $Id: phar_object.c,v 1.266.2.33 2008/07/07 01:11:07 sfox Exp $ */
#include "phar_internal.h"
#include "func_interceptors.h"
@@ -3868,9 +3868,10 @@
PHP_METHOD(Phar, extractTo)
{
char *error = NULL;
+ php_stream *fp;
php_stream_statbuf ssb;
phar_entry_info *entry;
- char *pathto, *filename;
+ char *pathto, *filename, *actual;
int pathto_len, filename_len;
int ret, i;
int nelems;
@@ -3882,6 +3883,15 @@
return;
}
+ fp = php_stream_open_wrapper(phar_obj->arc.archive->fname, "rb",
IGNORE_URL|STREAM_MUST_SEEK, &actual);
+ efree(actual);
+ if (!fp) {
+ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0
TSRMLS_CC,
+ "Invalid argument, %s cannot be found",
phar_obj->arc.archive->fname);
+ return;
+ }
+ php_stream_close(fp);
+
if (pathto_len < 1) {
zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0
TSRMLS_CC,
"Invalid argument, extraction path must be non-zero
length");
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php