mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Do not allow zend.script_encoding to be set to 'pass'
When investigating another bug reported by GitHub user 'tstangner',
I discovered that PHP segfaults when the INI parameter
zend.script_encoding is set to "pass". This bug dates back to
December 2022 (caused by yours truly in 953864661a
).
If any PHP users in the wild were actually setting zend.script_encoding
to "pass" (which would be an utterly useless thing to do), I expect that
someone would have filed a bug report by now. The absence of such bug
reports is evidence that nobody is doing this.
Hence, it seems that the best fix is simply to disallow "pass" as a
choice for zend.script_encoding. The internal function
'php_mb_zend_encoding_list_parser' which I am modifying to accomplish
this has no other in-tree callers, aside from the 'exif' extension.
Further, exif only calls the function with a few hard-coded values, and
none of them are the string "pass", so this change will not have any
impact on exif.
This commit is contained in:
parent
cb97e7d8f3
commit
1e92d47f41
2 changed files with 16 additions and 1 deletions
15
Zend/tests/multibyte/multibyte_encoding_007.phpt
Normal file
15
Zend/tests/multibyte/multibyte_encoding_007.phpt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
--TEST--
|
||||||
|
Don't segfault when zend.script_encoding=pass
|
||||||
|
--EXTENSIONS--
|
||||||
|
mbstring
|
||||||
|
--INI--
|
||||||
|
zend.multibyte=1
|
||||||
|
zend.script_encoding=pass
|
||||||
|
internal_encoding=UTF-8
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
print "Done!\n";
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
Warning: PHP Startup: INI setting contains invalid encoding "pass" in Unknown on line 0
|
||||||
|
Done!
|
|
@ -474,7 +474,7 @@ static zend_result php_mb_zend_encoding_list_parser(const char *encoding_list, s
|
||||||
return php_mb_parse_encoding_list(
|
return php_mb_parse_encoding_list(
|
||||||
encoding_list, encoding_list_len,
|
encoding_list, encoding_list_len,
|
||||||
(const mbfl_encoding ***)return_list, return_size,
|
(const mbfl_encoding ***)return_list, return_size,
|
||||||
persistent, /* arg_num */ 0, /* allow_pass_encoding */ 1);
|
persistent, /* arg_num */ 0, /* allow_pass_encoding */ 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const zend_encoding *php_mb_zend_internal_encoding_getter(void)
|
static const zend_encoding *php_mb_zend_internal_encoding_getter(void)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue