diff options
author | Xinchen Hui <laruence@gmail.com> | 2014-03-03 16:56:54 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2014-03-03 16:56:54 +0800 |
commit | 7735226e365365a1ccae01158b2fb62d0b06ed16 (patch) | |
tree | c290510c9648e41b91e56c3aa7354bd6b5d5df4f | |
parent | ec30d8178d4b122393bf8585ea0a1edf277e6b80 (diff) | |
download | php-git-7735226e365365a1ccae01158b2fb62d0b06ed16.tar.gz |
Fixed memory leak in php_uname
-rw-r--r-- | ext/standard/info.c | 15 | ||||
-rw-r--r-- | ext/standard/info.h | 2 |
2 files changed, 8 insertions, 9 deletions
diff --git a/ext/standard/info.c b/ext/standard/info.c index eba23a89c5..307bacd10a 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -525,7 +525,7 @@ void php_get_windows_cpu(char *buf, int bufsize) /* {{{ php_get_uname */ -PHPAPI char *php_get_uname(char mode) +PHPAPI zend_string *php_get_uname(char mode) { char *php_uname; char tmp_uname[256]; @@ -627,7 +627,7 @@ PHPAPI char *php_get_uname(char mode) php_uname = PHP_UNAME; #endif #endif - return estrdup(php_uname); + return STR_INIT(php_uname, strlen(php_uname), 0); } /* }}} */ @@ -662,7 +662,7 @@ static int module_name_cmp(const void *a, const void *b TSRMLS_DC) PHPAPI void php_print_info(int flag TSRMLS_DC) { char **env, *tmp1, *tmp2; - char *php_uname; + zend_string *php_uname; if (!sapi_module.phpinfo_as_text) { php_print_info_htmlhead(TSRMLS_C); @@ -702,8 +702,8 @@ PHPAPI void php_print_info(int flag TSRMLS_DC) } php_info_print_box_end(); php_info_print_table_start(); - php_info_print_table_row(2, "System", php_uname ); - php_info_print_table_row(2, "Build Date", __DATE__ " " __TIME__ ); + php_info_print_table_row(2, "System", php_uname->val); + php_info_print_table_row(2, "Build Date", __DATE__ " " __TIME__); #ifdef COMPILER php_info_print_table_row(2, "Compiler", COMPILER); #endif @@ -805,7 +805,7 @@ PHPAPI void php_print_info(int flag TSRMLS_DC) zend_html_puts(zend_version, strlen(zend_version) TSRMLS_CC); } php_info_print_box_end(); - efree(php_uname); + STR_FREE(php_uname); } zend_ini_sort_entries(TSRMLS_C); @@ -1221,8 +1221,7 @@ PHP_FUNCTION(php_uname) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &mode, &modelen) == FAILURE) { return; } -//??? RETURN_STRING(php_get_uname(*mode), 0); - RETURN_STRING(php_get_uname(*mode)); + RETURN_STR(php_get_uname(*mode)); } /* }}} */ diff --git a/ext/standard/info.h b/ext/standard/info.h index 6775a2660c..8be58160ed 100644 --- a/ext/standard/info.h +++ b/ext/standard/info.h @@ -79,7 +79,7 @@ PHPAPI void php_info_print_box_start(int bg); PHPAPI void php_info_print_box_end(void); PHPAPI void php_info_print_hr(void); PHPAPI void php_info_print_module(zend_module_entry *module TSRMLS_DC); -PHPAPI char *php_get_uname(char mode); +PHPAPI zend_string *php_get_uname(char mode); void register_phpinfo_constants(INIT_FUNC_ARGS); END_EXTERN_C() |