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

Reply via email to