moriyoshi Thu Oct 16 01:01:05 2008 UTC Added files: /php-src/ext/mbstring/tests bug45722.phpt
Modified files: /php-src/ext/mbstring/libmbfl/filters mbfilter_htmlent.c Log: - Fix bug #45722 (mb_check_encoding() crashes). http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c?r1=1.7&r2=1.8&diff_format=u Index: php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c diff -u php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c:1.7 php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c:1.8 --- php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c:1.7 Mon Feb 21 10:12:43 2005 +++ php-src/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c Thu Oct 16 01:01:05 2008 @@ -232,8 +232,7 @@ mbfl_filt_conv_html_dec_flush(filter); if (c=='&') { - filter->status = 1; - buffer[0] = '&'; + buffer[filter->status++] = '&'; } } } @@ -244,17 +243,19 @@ int mbfl_filt_conv_html_dec_flush(mbfl_convert_filter *filter) { int status, pos = 0; - char *buffer; + unsigned char *buffer; + int err = 0; - buffer = (char*)filter->opaque; + buffer = (unsigned char*)filter->opaque; status = filter->status; + filter->status = 0; /* flush fragments */ while (status--) { - CK((*filter->output_function)(buffer[pos++], filter->data)); + int e = (*filter->output_function)(buffer[pos++], filter->data); + if (e != 0) + err = e; } - filter->status = 0; - /*filter->buffer = 0; of cause NOT*/ - return 0; + return err; } http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/bug45722.phpt?view=markup&rev=1.1 Index: php-src/ext/mbstring/tests/bug45722.phpt +++ php-src/ext/mbstring/tests/bug45722.phpt --TEST-- Bug #45722 (mb_check_encoding() crashes) --FILE-- <?php var_dump(mb_check_encoding("&\xc2\xb7 TEST TEST TEST TEST TEST TEST", "HTML-ENTITIES")); ?> --EXPECT-- bool(false) -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php