tony2001 Fri Dec 23 15:05:42 2005 EDT Modified files: /php-src/ext/standard/tests/file bug35781.phpt /php-src/main/streams plain_wrapper.c streams.c Log: MFB: fix #35781 (stream_filter_append() can cause segfault) http://cvs.php.net/viewcvs.cgi/php-src/ext/standard/tests/file/bug35781.phpt?r1=1.1&r2=1.2&diff_format=u Index: php-src/ext/standard/tests/file/bug35781.phpt diff -u /dev/null php-src/ext/standard/tests/file/bug35781.phpt:1.2 --- /dev/null Fri Dec 23 15:05:42 2005 +++ php-src/ext/standard/tests/file/bug35781.phpt Fri Dec 23 15:05:42 2005 @@ -0,0 +1,24 @@ +--TEST-- +Bug #35781 (stream_filter_append() causes segfault) +--FILE-- +<?php + +$filename = dirname(__FILE__)."/bug35781.txt"; + +$fp = fopen($filename, "w"); +stream_filter_append($fp, "string.rot13", -49); +fwrite($fp, "This is a test\n"); +rewind($fp); +fpassthru($fp); +fclose($fp); + +var_dump(file_get_contents($filename)); + [EMAIL PROTECTED]($filename); + +echo "Done\n"; +?> +--EXPECTF-- +string(15) "Guvf vf n grfg +" +Done http://cvs.php.net/viewcvs.cgi/php-src/main/streams/plain_wrapper.c?r1=1.54&r2=1.55&diff_format=u Index: php-src/main/streams/plain_wrapper.c diff -u php-src/main/streams/plain_wrapper.c:1.54 php-src/main/streams/plain_wrapper.c:1.55 --- php-src/main/streams/plain_wrapper.c:1.54 Thu Nov 17 14:19:06 2005 +++ php-src/main/streams/plain_wrapper.c Fri Dec 23 15:05:42 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: plain_wrapper.c,v 1.54 2005/11/17 14:19:06 tony2001 Exp $ */ +/* $Id: plain_wrapper.c,v 1.55 2005/12/23 15:05:42 tony2001 Exp $ */ #include "php.h" #include "php_globals.h" @@ -316,7 +316,7 @@ if (data->fd >= 0) { ret = read(data->fd, buf, count); - stream->eof = (ret == 0 || (ret == -1 && errno != EWOULDBLOCK)); + stream->eof = (ret == 0 || (ret == (size_t)-1 && errno != EWOULDBLOCK)); } else { #if HAVE_FLUSHIO http://cvs.php.net/viewcvs.cgi/php-src/main/streams/streams.c?r1=1.92&r2=1.93&diff_format=u Index: php-src/main/streams/streams.c diff -u php-src/main/streams/streams.c:1.92 php-src/main/streams/streams.c:1.93 --- php-src/main/streams/streams.c:1.92 Tue Dec 20 09:48:24 2005 +++ php-src/main/streams/streams.c Fri Dec 23 15:05:42 2005 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.92 2005/12/20 09:48:24 tony2001 Exp $ */ +/* $Id: streams.c,v 1.93 2005/12/23 15:05:42 tony2001 Exp $ */ #define _GNU_SOURCE #include "php.h" @@ -442,7 +442,7 @@ /* read a chunk into a bucket */ justread = stream->ops->read(stream, chunk_buf, stream->chunk_size TSRMLS_CC); - if (justread > 0) { + if (justread != (size_t)-1) { bucket = php_stream_bucket_new(stream, chunk_buf, justread, 0, 0 TSRMLS_CC); /* after this call, bucket is owned by the brigade */ @@ -527,7 +527,7 @@ break; } - if (justread == 0) { + if (justread == 0 || justread == (size_t)-1) { break; } }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php