diff options
author | Dmitry Stogov <dmitry@php.net> | 2006-08-22 12:04:53 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2006-08-22 12:04:53 +0000 |
commit | f7e99a2162820d7a3dd52c30e1e0bfda2ec27e2f (patch) | |
tree | 41d3776699810248ac1938c83c1e838b71756b96 | |
parent | 08a9ab02ba56fbf43062073a3749407645698b51 (diff) | |
download | php-git-f7e99a2162820d7a3dd52c30e1e0bfda2ec27e2f.tar.gz |
Fixed bug #38543 (shutdown_executor() may segfault when memory_limit is too low).
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | sapi/cli/php_cli.c | 11 |
2 files changed, 11 insertions, 2 deletions
@@ -1,6 +1,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? Sep 2006, PHP 5.2.0 +- Fixed bug #38543 (shutdown_executor() may segfault when memory_limit is too + low). (Dmitry) - Fixed bug #38535 (memory corruption in pdo_pgsql driver on error retrieval inside a failed query executed via query() method). (Ilia) - Fixed bug #38524 (strptime() does not initialize the internal date storage diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c index a7e3288be2..63e0314b16 100644 --- a/sapi/cli/php_cli.c +++ b/sapi/cli/php_cli.c @@ -585,6 +585,7 @@ int main(int argc, char *argv[]) char *script_file=NULL; int interactive=0; int module_started = 0; + int request_started = 0; int lineno = 0; char *exec_direct=NULL, *exec_run=NULL, *exec_begin=NULL, *exec_end=NULL; const char *param_error=NULL; @@ -711,6 +712,7 @@ int main(int argc, char *argv[]) if (php_request_startup(TSRMLS_C)==FAILURE) { goto err; } + request_started = 1; php_cli_usage(argv[0]); php_end_ob_buffers(1 TSRMLS_CC); exit_status=0; @@ -720,6 +722,7 @@ int main(int argc, char *argv[]) if (php_request_startup(TSRMLS_C)==FAILURE) { goto err; } + request_started = 1; php_print_info(0xFFFFFFFF TSRMLS_CC); php_end_ob_buffers(1 TSRMLS_CC); exit_status=0; @@ -729,6 +732,7 @@ int main(int argc, char *argv[]) if (php_request_startup(TSRMLS_C)==FAILURE) { goto err; } + request_started = 1; php_printf("[PHP Modules]\n"); print_modules(TSRMLS_C); php_printf("\n[Zend Modules]\n"); @@ -743,6 +747,7 @@ int main(int argc, char *argv[]) goto err; } + request_started = 1; php_printf("PHP %s (%s) (built: %s %s) %s\nCopyright (c) 1997-2006 The PHP Group\n%s", PHP_VERSION, sapi_module.name, __DATE__, __TIME__, #if ZEND_DEBUG && defined(HAVE_GCOV) @@ -993,10 +998,10 @@ int main(int argc, char *argv[]) if (php_request_startup(TSRMLS_C)==FAILURE) { *arg_excp = arg_free; fclose(file_handle.handle.fp); - php_request_shutdown((void *) 0); PUTS("Could not startup.\n"); goto err; } + request_started = 1; CG(start_lineno) = lineno; *arg_excp = arg_free; /* reconstuct argv */ @@ -1247,7 +1252,9 @@ int main(int argc, char *argv[]) } zend_end_try(); out: - php_request_shutdown((void *) 0); + if (request_started) { + php_request_shutdown((void *) 0); + } if (exit_status == 0) { exit_status = EG(exit_status); } |