Skip to content

Fix GH-10648: add check function pointer into mbfl_encoding #10828

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ PHP NEWS
- MBString:
. ext/mbstring: fix new_value length check. (Max Kellermann)
. Fix bug GH-10627 (mb_convert_encoding crashes PHP on Windows). (nielsdos)
. Fix bug GH-10192 (mb_detect_encoding() results for UTF-7 differ between
PHP 8.0 and 8.1 (if UTF-7 is present in the encodings list and the string
contains '+' character)). (pakutoma)
. Fix bug GH-10648 (mb_check_encoding() returns true for incorrect but
interpretable ISO-2022-JP byte sequences). (pakutoma)

- Opcache:
. Fix incorrect page_size check. (nielsdos)
Expand Down
10 changes: 10 additions & 0 deletions UPGRADING
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,16 @@ PHP 8.2 UPGRADE NOTES
dba_fetch(string|array $key, $skip, $dba): string|false
is still accepted, but it is recommended to use the new standard variant.

- MBString
. mb_check_encoding() now checks input encoding more strictly.
. mb_detect_encoding() now checks input encoding more strictly
when strict detection is enabled.
. mb_convert_encoding() checks the input encoding more strictly
if multiple encodings are passed to from_encoding
and the mbstring.strict_detection INI directive is set to 1.
This change only affects the encoding selection,
not the result of the conversion.

- Random
. random_bytes() and random_int() now throw \Random\RandomException on CSPRNG failure.
Previously a plain \Exception was thrown.
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_7bit.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ const mbfl_encoding mbfl_encoding_7bit = {
&vtbl_7bit_wchar,
&vtbl_wchar_7bit,
mb_7bit_to_wchar,
mb_wchar_to_7bit
mb_wchar_to_7bit,
NULL
};

#define CK(statement) do { if ((statement) < 0) return (-1); } while (0)
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_base64.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ const mbfl_encoding mbfl_encoding_base64 = {
NULL,
NULL,
mb_base64_to_wchar,
mb_wchar_to_base64
mb_wchar_to_base64,
NULL
};

const struct mbfl_convert_vtbl vtbl_8bit_b64 = {
Expand Down
6 changes: 4 additions & 2 deletions ext/mbstring/libmbfl/filters/mbfilter_big5.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ const mbfl_encoding mbfl_encoding_big5 = {
&vtbl_big5_wchar,
&vtbl_wchar_big5,
mb_big5_to_wchar,
mb_wchar_to_big5
mb_wchar_to_big5,
NULL
};

const mbfl_encoding mbfl_encoding_cp950 = {
Expand All @@ -82,7 +83,8 @@ const mbfl_encoding mbfl_encoding_cp950 = {
&vtbl_cp950_wchar,
&vtbl_wchar_cp950,
mb_cp950_to_wchar,
mb_wchar_to_cp950
mb_wchar_to_cp950,
NULL
};

const struct mbfl_convert_vtbl vtbl_big5_wchar = {
Expand Down
9 changes: 6 additions & 3 deletions ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ const mbfl_encoding mbfl_encoding_cp50220 = {
&vtbl_cp50220_wchar,
&vtbl_wchar_cp50220,
mb_cp5022x_to_wchar,
mb_wchar_to_cp50220
mb_wchar_to_cp50220,
NULL
};

const mbfl_encoding mbfl_encoding_cp50221 = {
Expand All @@ -74,7 +75,8 @@ const mbfl_encoding mbfl_encoding_cp50221 = {
&vtbl_cp50221_wchar,
&vtbl_wchar_cp50221,
mb_cp5022x_to_wchar,
mb_wchar_to_cp50221
mb_wchar_to_cp50221,
NULL
};

const mbfl_encoding mbfl_encoding_cp50222 = {
Expand All @@ -87,7 +89,8 @@ const mbfl_encoding mbfl_encoding_cp50222 = {
&vtbl_cp50222_wchar,
&vtbl_wchar_cp50222,
mb_cp5022x_to_wchar,
mb_wchar_to_cp50222
mb_wchar_to_cp50222,
NULL
};

const struct mbfl_convert_vtbl vtbl_cp50220_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_cp51932.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ const mbfl_encoding mbfl_encoding_cp51932 = {
&vtbl_cp51932_wchar,
&vtbl_wchar_cp51932,
mb_cp51932_to_wchar,
mb_wchar_to_cp51932
mb_wchar_to_cp51932,
NULL
};

const struct mbfl_convert_vtbl vtbl_cp51932_wchar = {
Expand Down
6 changes: 4 additions & 2 deletions ext/mbstring/libmbfl/filters/mbfilter_cp932.c
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ const mbfl_encoding mbfl_encoding_cp932 = {
&vtbl_cp932_wchar,
&vtbl_wchar_cp932,
mb_cp932_to_wchar,
mb_wchar_to_cp932
mb_wchar_to_cp932,
NULL
};

const struct mbfl_convert_vtbl vtbl_cp932_wchar = {
Expand Down Expand Up @@ -133,7 +134,8 @@ const mbfl_encoding mbfl_encoding_sjiswin = {
&vtbl_sjiswin_wchar,
&vtbl_wchar_sjiswin,
mb_cp932_to_wchar,
mb_wchar_to_sjiswin
mb_wchar_to_sjiswin,
NULL
};

const struct mbfl_convert_vtbl vtbl_sjiswin_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_cp936.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ const mbfl_encoding mbfl_encoding_cp936 = {
&vtbl_cp936_wchar,
&vtbl_wchar_cp936,
mb_cp936_to_wchar,
mb_wchar_to_cp936
mb_wchar_to_cp936,
NULL
};

const struct mbfl_convert_vtbl vtbl_cp936_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ const mbfl_encoding mbfl_encoding_euc_cn = {
&vtbl_euccn_wchar,
&vtbl_wchar_euccn,
mb_euccn_to_wchar,
mb_wchar_to_euccn
mb_wchar_to_euccn,
NULL
};

const struct mbfl_convert_vtbl vtbl_euccn_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ const mbfl_encoding mbfl_encoding_euc_jp = {
&vtbl_eucjp_wchar,
&vtbl_wchar_eucjp,
mb_eucjp_to_wchar,
mb_wchar_to_eucjp
mb_wchar_to_eucjp,
NULL
};

const struct mbfl_convert_vtbl vtbl_eucjp_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ const mbfl_encoding mbfl_encoding_eucjp_win = {
&vtbl_eucjpwin_wchar,
&vtbl_wchar_eucjpwin,
mb_eucjpwin_to_wchar,
mb_wchar_to_eucjpwin
mb_wchar_to_eucjpwin,
NULL
};

const struct mbfl_convert_vtbl vtbl_eucjpwin_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ const mbfl_encoding mbfl_encoding_euc_kr = {
&vtbl_euckr_wchar,
&vtbl_wchar_euckr,
mb_euckr_to_wchar,
mb_wchar_to_euckr
mb_wchar_to_euckr,
NULL
};

const struct mbfl_convert_vtbl vtbl_euckr_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ const mbfl_encoding mbfl_encoding_euc_tw = {
&vtbl_euctw_wchar,
&vtbl_wchar_euctw,
mb_euctw_to_wchar,
mb_wchar_to_euctw
mb_wchar_to_euctw,
NULL
};

const struct mbfl_convert_vtbl vtbl_euctw_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_gb18030.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ const mbfl_encoding mbfl_encoding_gb18030 = {
&vtbl_gb18030_wchar,
&vtbl_wchar_gb18030,
mb_gb18030_to_wchar,
mb_wchar_to_gb18030
mb_wchar_to_gb18030,
NULL
};

const struct mbfl_convert_vtbl vtbl_gb18030_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_htmlent.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ const mbfl_encoding mbfl_encoding_html_ent = {
&vtbl_html_wchar,
&vtbl_wchar_html,
mb_htmlent_to_wchar,
mb_wchar_to_htmlent
mb_wchar_to_htmlent,
NULL
};

const struct mbfl_convert_vtbl vtbl_wchar_html = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_hz.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ const mbfl_encoding mbfl_encoding_hz = {
&vtbl_hz_wchar,
&vtbl_wchar_hz,
mb_hz_to_wchar,
mb_wchar_to_hz
mb_wchar_to_hz,
NULL
};

const struct mbfl_convert_vtbl vtbl_hz_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ const mbfl_encoding mbfl_encoding_2022jpms = {
&vtbl_2022jpms_wchar,
&vtbl_wchar_2022jpms,
mb_iso2022jpms_to_wchar,
mb_wchar_to_iso2022jpms
mb_wchar_to_iso2022jpms,
NULL
};

const struct mbfl_convert_vtbl vtbl_2022jpms_wchar = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ const mbfl_encoding mbfl_encoding_2022kr = {
&vtbl_2022kr_wchar,
&vtbl_wchar_2022kr,
mb_iso2022kr_to_wchar,
mb_wchar_to_iso2022kr
mb_wchar_to_iso2022kr,
NULL
};

const struct mbfl_convert_vtbl vtbl_wchar_2022kr = {
Expand Down
3 changes: 2 additions & 1 deletion ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ const mbfl_encoding mbfl_encoding_2022jp_kddi = {
&vtbl_2022jp_kddi_wchar,
&vtbl_wchar_2022jp_kddi,
mb_iso2022jp_kddi_to_wchar,
mb_wchar_to_iso2022jp_kddi
mb_wchar_to_iso2022jp_kddi,
NULL
};

const struct mbfl_convert_vtbl vtbl_2022jp_kddi_wchar = {
Expand Down
Loading