diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2017-07-23 12:22:09 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-07-23 12:22:09 +0200 |
commit | 698132d6f981b118642a85e964a10f4721f903e4 (patch) | |
tree | 7f1116b3be3338f7e961de6e23a6d4950e064ebf | |
parent | b8ed74ce770b1659321dd283c2c146ed9eac4bf0 (diff) | |
parent | 88f752a9471b9fdc3dcdbdc0c110faedae31feab (diff) | |
download | php-git-698132d6f981b118642a85e964a10f4721f903e4.tar.gz |
Merge branch 'PHP-7.2'
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_htmlent.c | 10 | ||||
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_htmlent.h | 1 | ||||
-rw-r--r-- | ext/mbstring/tests/bug71606.phpt | 13 |
3 files changed, 22 insertions, 2 deletions
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c index 9d530abfba..03b26cc0b7 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c @@ -88,7 +88,8 @@ const struct mbfl_convert_vtbl vtbl_html_wchar = { mbfl_filt_conv_html_dec_ctor, mbfl_filt_conv_html_dec_dtor, mbfl_filt_conv_html_dec, - mbfl_filt_conv_html_dec_flush }; + mbfl_filt_conv_html_dec_flush, + mbfl_filt_conv_html_dec_copy }; #define CK(statement) do { if ((statement) < 0) return (-1); } while (0) @@ -309,4 +310,9 @@ int mbfl_filt_conv_html_dec_flush(mbfl_convert_filter *filter) return err; } - +void mbfl_filt_conv_html_dec_copy(mbfl_convert_filter *src, mbfl_convert_filter *dest) +{ + *dest = *src; + dest->opaque = mbfl_malloc(html_enc_buffer_size+1); + memcpy(dest->opaque, src->opaque, html_enc_buffer_size+1); +} diff --git a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.h b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.h index 6b6ce49951..979f6011ea 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.h +++ b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.h @@ -42,6 +42,7 @@ int mbfl_filt_conv_html_enc(int c, mbfl_convert_filter *filter); int mbfl_filt_conv_html_enc_flush(mbfl_convert_filter *filter); int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter); int mbfl_filt_conv_html_dec_flush(mbfl_convert_filter *filter); +void mbfl_filt_conv_html_dec_copy(mbfl_convert_filter *src, mbfl_convert_filter *dest); void mbfl_filt_conv_html_dec_ctor(mbfl_convert_filter *filter); void mbfl_filt_conv_html_dec_dtor(mbfl_convert_filter *filter); diff --git a/ext/mbstring/tests/bug71606.phpt b/ext/mbstring/tests/bug71606.phpt new file mode 100644 index 0000000000..a09d7ad8db --- /dev/null +++ b/ext/mbstring/tests/bug71606.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #71606 (Segmentation fault mb_strcut + mb_list_encodings) +--SKIPIF-- +<?php +if (!extension_loaded('mbstring')) die('skip ext/mbstring not available'); +?> +--FILE-- +<?php +echo mb_strcut('"', 0, 0, 'HTML-ENTITIES'); +echo 'DONE', PHP_EOL; +?> +--EXPECT-- +DONE |