Skip to content

Commit b5db594

Browse files
authored
Refacto php_module_startup() (#8303)
It only ever uses at most 1 additional modules
1 parent 09d313d commit b5db594

File tree

11 files changed

+18
-51
lines changed

11 files changed

+18
-51
lines changed

main/main.c

+7-22
Original file line numberDiff line numberDiff line change
@@ -1960,24 +1960,6 @@ int php_register_extensions(zend_module_entry * const * ptr, int count)
19601960
return SUCCESS;
19611961
}
19621962

1963-
/* A very long time ago php_module_startup() was refactored in a way
1964-
* which broke calling it with more than one additional module.
1965-
* This alternative to php_register_extensions() works around that
1966-
* by walking the shallower structure.
1967-
*
1968-
* See algo: https://bugs.php.net/bug.php?id=63159
1969-
*/
1970-
static int php_register_extensions_bc(zend_module_entry *ptr, int count)
1971-
{
1972-
while (count--) {
1973-
if (zend_register_internal_module(ptr++) == NULL) {
1974-
return FAILURE;
1975-
}
1976-
}
1977-
return SUCCESS;
1978-
}
1979-
/* }}} */
1980-
19811963
#ifdef PHP_WIN32
19821964
static _invalid_parameter_handler old_invalid_parameter_handler;
19831965

@@ -2012,11 +1994,12 @@ void dummy_invalid_parameter_handler(
20121994
#endif
20131995

20141996
/* {{{ php_module_startup */
2015-
int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_modules, uint32_t num_additional_modules)
1997+
zend_result php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_module)
20161998
{
20171999
zend_utility_functions zuf;
20182000
zend_utility_values zuv;
2019-
int retval = SUCCESS, module_number=0; /* for REGISTER_INI_ENTRIES() */
2001+
zend_result retval = SUCCESS;
2002+
int module_number = 0; /* for REGISTER_INI_ENTRIES() */
20202003
char *php_os;
20212004
zend_module_entry *module;
20222005

@@ -2243,7 +2226,9 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
22432226
}
22442227

22452228
/* start additional PHP extensions */
2246-
php_register_extensions_bc(additional_modules, num_additional_modules);
2229+
if (additional_module && (zend_register_internal_module(additional_module) == NULL)) {
2230+
return FAILURE;
2231+
}
22472232

22482233
/* load and startup extensions compiled as shared objects (aka DLLs)
22492234
as requested by php.ini entries
@@ -2278,7 +2263,7 @@ int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_mod
22782263
module->version = PHP_VERSION;
22792264
module->info_func = PHP_MINFO(php_core);
22802265
}
2281-
2266+
22822267
/* freeze the list of observer fcall_init handlers */
22832268
zend_observer_post_startup();
22842269

main/php_main.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
BEGIN_EXTERN_C()
2626
PHPAPI int php_request_startup(void);
2727
PHPAPI void php_request_shutdown(void *dummy);
28-
PHPAPI int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_modules, uint32_t num_additional_modules);
28+
PHPAPI zend_result php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_module);
2929
PHPAPI void php_module_shutdown(void);
3030
PHPAPI int php_module_shutdown_wrapper(sapi_module_struct *sapi_globals);
3131

sapi/apache2handler/sapi_apache2.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -378,10 +378,7 @@ extern zend_module_entry php_apache_module;
378378

379379
static int php_apache2_startup(sapi_module_struct *sapi_module)
380380
{
381-
if (php_module_startup(sapi_module, &php_apache_module, 1)==FAILURE) {
382-
return FAILURE;
383-
}
384-
return SUCCESS;
381+
return php_module_startup(sapi_module, &php_apache_module);
385382
}
386383

387384
static sapi_module_struct apache2_sapi_module = {

sapi/cgi/cgi_main.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -967,10 +967,7 @@ static int sapi_cgi_deactivate(void)
967967

968968
static int php_cgi_startup(sapi_module_struct *sapi_module)
969969
{
970-
if (php_module_startup(sapi_module, &cgi_module_entry, 1) == FAILURE) {
971-
return FAILURE;
972-
}
973-
return SUCCESS;
970+
return php_module_startup(sapi_module, &cgi_module_entry);
974971
}
975972

976973
/* {{{ sapi_module_struct cgi_sapi_module */

sapi/cli/php_cli.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -407,10 +407,7 @@ static void sapi_cli_send_header(sapi_header_struct *sapi_header, void *server_c
407407

408408
static int php_cli_startup(sapi_module_struct *sapi_module) /* {{{ */
409409
{
410-
if (php_module_startup(sapi_module, NULL, 0)==FAILURE) {
411-
return FAILURE;
412-
}
413-
return SUCCESS;
410+
return php_module_startup(sapi_module, NULL);
414411
}
415412
/* }}} */
416413

sapi/cli/php_cli_server.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ const zend_function_entry server_additional_functions[] = {
498498

499499
static int sapi_cli_server_startup(sapi_module_struct *sapi_module) /* {{{ */
500500
{
501-
return php_module_startup(sapi_module, &cli_server_module_entry, 1);
501+
return php_module_startup(sapi_module, &cli_server_module_entry);
502502
} /* }}} */
503503

504504
static size_t sapi_cli_server_ub_write(const char *str, size_t str_length) /* {{{ */

sapi/embed/php_embed.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,7 @@ static void php_embed_register_variables(zval *track_vars_array)
119119
/* Module initialization (MINIT) */
120120
static int php_embed_startup(sapi_module_struct *sapi_module)
121121
{
122-
if (php_module_startup(sapi_module, NULL, 0) == FAILURE) {
123-
return FAILURE;
124-
}
125-
return SUCCESS;
122+
return php_module_startup(sapi_module, NULL);
126123
}
127124

128125
EMBED_SAPI_API sapi_module_struct php_embed_module = {

sapi/fpm/fpm/fpm_main.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -767,10 +767,7 @@ static int sapi_cgi_deactivate(void) /* {{{ */
767767

768768
static int php_cgi_startup(sapi_module_struct *sapi_module) /* {{{ */
769769
{
770-
if (php_module_startup(sapi_module, &cgi_module_entry, 1) == FAILURE) {
771-
return FAILURE;
772-
}
773-
return SUCCESS;
770+
return php_module_startup(sapi_module, &cgi_module_entry);
774771
}
775772
/* }}} */
776773

sapi/fuzzer/fuzzer-sapi.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,7 @@ const char HARDCODED_INI[] =
6262

6363
static int startup(sapi_module_struct *sapi_module)
6464
{
65-
if (php_module_startup(sapi_module, NULL, 0)==FAILURE) {
66-
return FAILURE;
67-
}
68-
return SUCCESS;
65+
return php_module_startup(sapi_module, NULL);
6966
}
7067

7168
static size_t ub_write(const char *str, size_t str_length)

sapi/litespeed/lsapi_main.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ static void init_sapi_from_env(sapi_module_struct *sapi_module)
9797
/* {{{ php_lsapi_startup */
9898
static int php_lsapi_startup(sapi_module_struct *sapi_module)
9999
{
100-
if (php_module_startup(sapi_module, NULL, 0)==FAILURE) {
100+
if (php_module_startup(sapi_module, NULL)==FAILURE) {
101101
return FAILURE;
102102
}
103103
argv0 = sapi_module->executable_location;
@@ -1518,7 +1518,7 @@ int main( int argc, char * argv[] )
15181518

15191519
lsapi_sapi_module.ini_defaults = sapi_lsapi_ini_defaults;
15201520

1521-
if (php_module_startup(&lsapi_sapi_module, &litespeed_module_entry, 1) == FAILURE) {
1521+
if (php_module_startup(&lsapi_sapi_module, &litespeed_module_entry) == FAILURE) {
15221522
#ifdef ZTS
15231523
tsrm_shutdown();
15241524
#endif

sapi/phpdbg/phpdbg.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ static zend_module_entry sapi_phpdbg_module_entry = {
706706

707707
static inline int php_sapi_phpdbg_module_startup(sapi_module_struct *module) /* {{{ */
708708
{
709-
if (php_module_startup(module, &sapi_phpdbg_module_entry, 1) == FAILURE) {
709+
if (php_module_startup(module, &sapi_phpdbg_module_entry) == FAILURE) {
710710
return FAILURE;
711711
}
712712

0 commit comments

Comments
 (0)