diff --git a/NEWS b/NEWS index 816055b9818..7b75a9efc4d 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,10 @@ PHP NEWS . Added support for reading GIFs without colormap to bundled libgd. (Andrew Burley, cmb) +- Gettext: + . Fixed bug GH-17400 (bindtextdomain SEGV on invalid domain). + (David Carlier) + - Intl: . Fixed bug GH-11874 (intl causing segfault in docker images). (nielsdos) diff --git a/ext/gettext/gettext.c b/ext/gettext/gettext.c index 53eaf797545..27f0dfa26da 100644 --- a/ext/gettext/gettext.c +++ b/ext/gettext/gettext.c @@ -183,9 +183,9 @@ PHP_FUNCTION(bindtextdomain) char *retval, dir_name[MAXPATHLEN], *btd_result; ZEND_PARSE_PARAMETERS_START(1, 2) - Z_PARAM_STR(domain) + Z_PARAM_PATH_STR(domain) Z_PARAM_OPTIONAL - Z_PARAM_STR_OR_NULL(dir) + Z_PARAM_PATH_STR_OR_NULL(dir) ZEND_PARSE_PARAMETERS_END(); PHP_GETTEXT_DOMAIN_LENGTH_CHECK(1, ZSTR_LEN(domain)) diff --git a/ext/gettext/tests/gh17400.phpt b/ext/gettext/tests/gh17400.phpt new file mode 100644 index 00000000000..836b792bf0d --- /dev/null +++ b/ext/gettext/tests/gh17400.phpt @@ -0,0 +1,19 @@ +--TEST-- +GH-17400 bindtextdomain segfaults with invalid domain/domain with null bytes. +--EXTENSIONS-- +gettext +--CREDITS-- +YuanchengJiang +--FILE-- +getMessage(); +} +?> +--EXPECT-- +bindtextdomain(): Argument #1 ($domain) must not contain any null bytes