From 10b2b4a52c38ed83d4e988d0185bacf05668d02f Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Mon, 23 Oct 2023 21:36:01 +0200 Subject: [PATCH] Fix memory leak in standard syslog device handling The BG(syslog_device) is leaked in RINIT. Closes GH-12501 --- NEWS | 3 ++- ext/standard/basic_functions.c | 10 +--------- ext/standard/php_ext_syslog.h | 4 ---- ext/standard/syslog.c | 16 +--------------- 4 files changed, 4 insertions(+), 29 deletions(-) diff --git a/NEWS b/NEWS index b3e754ab4ee..13adf6f0b17 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 8.1.27 - +- Standard: + . Fix memory leak in syslog device handling. (danog) 23 Nov 2023, PHP 8.1.26 diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 1e50a37f2c6..cdffeebed66 100755 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -427,9 +427,6 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ PHP_MSHUTDOWN_FUNCTION(basic) /* {{{ */ { -#ifdef HAVE_SYSLOG_H - PHP_MSHUTDOWN(syslog)(SHUTDOWN_FUNC_ARGS_PASSTHRU); -#endif #ifdef ZTS ts_free_id(basic_globals_id); #ifdef PHP_WIN32 @@ -487,9 +484,6 @@ PHP_RINIT_FUNCTION(basic) /* {{{ */ BG(user_shutdown_function_names) = NULL; PHP_RINIT(filestat)(INIT_FUNC_ARGS_PASSTHRU); -#ifdef HAVE_SYSLOG_H - BASIC_RINIT_SUBMODULE(syslog) -#endif BASIC_RINIT_SUBMODULE(dir) BASIC_RINIT_SUBMODULE(url_scanner_ex) @@ -541,9 +535,7 @@ PHP_RSHUTDOWN_FUNCTION(basic) /* {{{ */ PHP_RSHUTDOWN(filestat)(SHUTDOWN_FUNC_ARGS_PASSTHRU); #ifdef HAVE_SYSLOG_H -#ifdef PHP_WIN32 - BASIC_RSHUTDOWN_SUBMODULE(syslog)(SHUTDOWN_FUNC_ARGS_PASSTHRU); -#endif + BASIC_RSHUTDOWN_SUBMODULE(syslog); #endif BASIC_RSHUTDOWN_SUBMODULE(assert) BASIC_RSHUTDOWN_SUBMODULE(url_scanner_ex) diff --git a/ext/standard/php_ext_syslog.h b/ext/standard/php_ext_syslog.h index 5e091fb5280..fd7958fad29 100644 --- a/ext/standard/php_ext_syslog.h +++ b/ext/standard/php_ext_syslog.h @@ -22,11 +22,7 @@ #include "php_syslog.h" PHP_MINIT_FUNCTION(syslog); -PHP_RINIT_FUNCTION(syslog); -#ifdef PHP_WIN32 PHP_RSHUTDOWN_FUNCTION(syslog); -#endif -PHP_MSHUTDOWN_FUNCTION(syslog); #endif diff --git a/ext/standard/syslog.c b/ext/standard/syslog.c index 70fa8e241ab..6ea10cef247 100644 --- a/ext/standard/syslog.c +++ b/ext/standard/syslog.c @@ -96,23 +96,9 @@ PHP_MINIT_FUNCTION(syslog) } /* }}} */ -PHP_RINIT_FUNCTION(syslog) -{ - BG(syslog_device) = NULL; - return SUCCESS; -} - - -#ifdef PHP_WIN32 PHP_RSHUTDOWN_FUNCTION(syslog) { - closelog(); - return SUCCESS; -} -#endif - -PHP_MSHUTDOWN_FUNCTION(syslog) -{ + php_closelog(); if (BG(syslog_device)) { free(BG(syslog_device)); BG(syslog_device) = NULL;