[PHP-CVS] cvs: php-src(PHP_5_3) /ext/standard user_filters.c /ext/standard/tests/filters filter_errors.inc filter_errors_convert_base64_decode.phpt filter_errors_user.phpt

2009-01-08 Thread Arnaud Le Blanc
lbarnaudThu Jan  8 18:40:27 2009 UTC

  Modified files:  (Branch: PHP_5_3)
/php-src/ext/standard   user_filters.c 
/php-src/ext/standard/tests/filters filter_errors.inc 

filter_errors_convert_base64_decode.phpt 
filter_errors_user.phpt 
  Log:
  MFH:
  Fix memleak when a user filter appends a bucket and returns != PSFS_PASS_ON
  Improved tests
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/user_filters.c?r1=1.31.2.4.2.9.2.10r2=1.31.2.4.2.9.2.11diff_format=u
Index: php-src/ext/standard/user_filters.c
diff -u php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.10 
php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.11
--- php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.10   Wed Dec 31 
11:15:46 2008
+++ php-src/ext/standard/user_filters.c Thu Jan  8 18:40:27 2009
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: user_filters.c,v 1.31.2.4.2.9.2.10 2008/12/31 11:15:46 sebastian Exp $ 
*/
+/* $Id: user_filters.c,v 1.31.2.4.2.9.2.11 2009/01/08 18:40:27 lbarnaud Exp $ 
*/
 
 #include php.h
 #include php_globals.h
@@ -245,6 +245,14 @@
php_stream_bucket_delref(bucket TSRMLS_CC);
}
}
+   if (ret != PSFS_PASS_ON) {
+   php_stream_bucket *bucket = buckets_out-head;
+   while (bucket != NULL) {
+   php_stream_bucket_unlink(bucket TSRMLS_CC);
+   php_stream_bucket_delref(bucket TSRMLS_CC);
+   bucket = buckets_out-head;
+   }
+   }
 
/* filter resources are cleaned up by the stream destructor,
 * keeping a reference to the stream resource here would prevent it
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/filters/filter_errors.inc?r1=1.1.2.2r2=1.1.2.3diff_format=u
Index: php-src/ext/standard/tests/filters/filter_errors.inc
diff -u php-src/ext/standard/tests/filters/filter_errors.inc:1.1.2.2 
php-src/ext/standard/tests/filters/filter_errors.inc:1.1.2.3
--- php-src/ext/standard/tests/filters/filter_errors.inc:1.1.2.2Thu Jan 
 8 17:01:58 2009
+++ php-src/ext/standard/tests/filters/filter_errors.incThu Jan  8 
18:40:27 2009
@@ -27,7 +27,7 @@
fwrite($stream, b$data);
fseek($stream, 0, SEEK_SET);
 
-   stream_get_line($stream, 8192, \r\n);
+   stream_filter_append($stream, $filter);
stream_get_contents($stream);
 
 }
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt?r1=1.1.2.2r2=1.1.2.3diff_format=u
Index: 
php-src/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt
diff -u 
php-src/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt:1.1.2.2
 
php-src/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt:1.1.2.3
--- 
php-src/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt:1.1.2.2
 Thu Jan  8 17:01:58 2009
+++ php-src/ext/standard/tests/filters/filter_errors_convert_base64_decode.phpt 
Thu Jan  8 18:40:27 2009
@@ -14,3 +14,5 @@
 
 Warning: stream_filter_append(): Filter failed to process pre-buffered data in 
%s
 test filtering of non buffered data
+
+Warning: stream_get_contents(): stream filter (convert.base64-decode): invalid 
byte sequence in %s
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/filters/filter_errors_user.phpt?r1=1.1.2.2r2=1.1.2.3diff_format=u
Index: php-src/ext/standard/tests/filters/filter_errors_user.phpt
diff -u php-src/ext/standard/tests/filters/filter_errors_user.phpt:1.1.2.2 
php-src/ext/standard/tests/filters/filter_errors_user.phpt:1.1.2.3
--- php-src/ext/standard/tests/filters/filter_errors_user.phpt:1.1.2.2  Thu Jan 
 8 17:01:58 2009
+++ php-src/ext/standard/tests/filters/filter_errors_user.phpt  Thu Jan  8 
18:40:27 2009
@@ -26,14 +26,18 @@
 }
 class test_filter3 extends php_user_filter {
function filter($in, $out, $consumed, $closing) {
-   $bucket = stream_bucket_new($this-stream, 42);
-   stream_bucket_append($out, $bucket);
+   if (!$closing) {
+   $bucket = stream_bucket_new($this-stream, 42);
+   stream_bucket_append($out, $bucket);
+   }
return PSFS_ERR_FATAL;
}
 }
 class test_filter4 extends php_user_filter {
function filter($in, $out, $consumed, $closing) {
-   $bucket = stream_bucket_new($this-stream, 42);
+   if (!$closing) {
+   $bucket = stream_bucket_new($this-stream, 42);
+   }
return PSFS_ERR_FATAL;
}
 }
@@ -44,6 +48,43 @@
filter_errors_test(test_filter$i, 42);
 }
 
+echo test append / read / remove\n;
+for($i = 0; $i  5; ++$i) {
+   echo test_filter$i\n;
+   $stream = fopen('php://memory', 'wb+');
+   

[PHP-CVS] cvs: php-src(PHP_5_3) /ext/standard user_filters.c /ext/standard/tests/filters bug46164-1.phpt bug46164-2.phpt

2008-10-04 Thread Arnaud Le Blanc
lbarnaudSun Oct  5 01:40:19 2008 UTC

  Added files: (Branch: PHP_5_3)
/php-src/ext/standard/tests/filters bug46164-1.phpt bug46164-2.phpt 

  Modified files:  
/php-src/ext/standard   user_filters.c 
  Log:
  MFH: Fixed #46164 (stream_filter_remove() closes the stream)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/user_filters.c?r1=1.31.2.4.2.9.2.5r2=1.31.2.4.2.9.2.6diff_format=u
Index: php-src/ext/standard/user_filters.c
diff -u php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.5 
php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.6
--- php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.5Thu May  8 
18:28:25 2008
+++ php-src/ext/standard/user_filters.c Sun Oct  5 01:40:19 2008
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: user_filters.c,v 1.31.2.4.2.9.2.5 2008/05/08 18:28:25 felipe Exp $ */
+/* $Id: user_filters.c,v 1.31.2.4.2.9.2.6 2008/10/05 01:40:19 lbarnaud Exp $ */
 
 #include php.h
 #include php_globals.h
@@ -180,12 +180,14 @@
zval *retval = NULL;
zval **args[4];
zval *zclosing, *zconsumed, *zin, *zout, *zstream;
+   zval zpropname;
int call_result;
 
if (FAILURE == zend_hash_find(Z_OBJPROP_P(obj), stream, 
sizeof(stream), (void**)zstream)) {
/* Give the userfilter class a hook back to the stream */
ALLOC_INIT_ZVAL(zstream);
php_stream_to_zval(stream, zstream);
+   zval_copy_ctor(zstream);
add_property_zval(obj, stream, zstream);
/* add_property_zval increments the refcount which is unwanted 
here */
zval_ptr_dtor(zstream);
@@ -247,6 +249,13 @@
}
}
 
+   /* filter resources are cleaned up by the stream destructor,
+* keeping a reference to the stream resource here would prevent it
+* from being destroyed properly */
+   INIT_ZVAL(zpropname);
+   ZVAL_STRINGL(zpropname, stream, sizeof(stream)-1, 0);
+   Z_OBJ_HANDLER_P(obj, unset_property)(obj, zpropname TSRMLS_CC);
+
zval_ptr_dtor(zclosing);
zval_ptr_dtor(zconsumed);
zval_ptr_dtor(zout);

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/filters/bug46164-1.phpt?view=markuprev=1.1
Index: php-src/ext/standard/tests/filters/bug46164-1.phpt
+++ php-src/ext/standard/tests/filters/bug46164-1.phpt
--TEST--
Bug #46164 - 1 (stream_filter_remove() closes the stream)
--FILE--
?php
class user_filter extends php_user_filter {
function filter($in, $out, $consumed, $closing) {
while($bucket = stream_bucket_make_writeable($in)) {
$consumed += $bucket-datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
stream_filter_register('user_filter','user_filter');

$fd = fopen('php://memory','w');
$filter = stream_filter_append($fd, 'user_filter');
stream_filter_remove($filter);
var_dump(fclose($fd));
?
--EXPECT--
bool(true)

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/filters/bug46164-2.phpt?view=markuprev=1.1
Index: php-src/ext/standard/tests/filters/bug46164-2.phpt
+++ php-src/ext/standard/tests/filters/bug46164-2.phpt
--TEST--
Bug #46164 - 2 (stream_filter_remove() closes the stream)
--FILE--
?php
class user_filter extends php_user_filter {
function filter($in, $out, $consumed, $closing) {
while($bucket = stream_bucket_make_writeable($in)) {
$consumed += $bucket-datalen;
stream_bucket_append($out, $bucket);
}
unset($this-stream);
return PSFS_PASS_ON;
}
}
stream_filter_register('user_filter','user_filter');

$fd = fopen('php://memory','w');
$filter = stream_filter_append($fd, 'user_filter');
fwrite($fd, bfoo);
fflush($fd);
var_dump(fclose($fd));
?
--EXPECT--
bool(true)



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src(PHP_5_3) /ext/standard user_filters.c

2008-05-08 Thread Felipe Pena
felipe  Thu May  8 18:28:25 2008 UTC

  Modified files:  (Branch: PHP_5_3)
/php-src/ext/standard   user_filters.c 
  Log:
  - MFH: Fixed data size
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/user_filters.c?r1=1.31.2.4.2.9.2.4r2=1.31.2.4.2.9.2.5diff_format=u
Index: php-src/ext/standard/user_filters.c
diff -u php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.4 
php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.5
--- php-src/ext/standard/user_filters.c:1.31.2.4.2.9.2.4Mon Mar 10 
22:12:36 2008
+++ php-src/ext/standard/user_filters.c Thu May  8 18:28:25 2008
@@ -18,7 +18,7 @@
+--+
 */
 
-/* $Id: user_filters.c,v 1.31.2.4.2.9.2.4 2008/03/10 22:12:36 felipe Exp $ */
+/* $Id: user_filters.c,v 1.31.2.4.2.9.2.5 2008/05/08 18:28:25 felipe Exp $ */
 
 #include php.h
 #include php_globals.h
@@ -584,7 +584,7 @@
zend_hash_init(BG(user_filter_map), 5, NULL, (dtor_func_t) 
filter_item_dtor, 0);
}
 
-   fdat = ecalloc(1, sizeof(*fdat) + classname_len);
+   fdat = ecalloc(1, sizeof(struct php_user_filter_data) + classname_len);
memcpy(fdat-classname, classname, classname_len);
 
if (zend_hash_add(BG(user_filter_map), filtername, filtername_len + 1, 
(void*)fdat,



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php