summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2014-03-03 16:56:54 +0800
committerXinchen Hui <laruence@gmail.com>2014-03-03 16:56:54 +0800
commit7735226e365365a1ccae01158b2fb62d0b06ed16 (patch)
treec290510c9648e41b91e56c3aa7354bd6b5d5df4f
parentec30d8178d4b122393bf8585ea0a1edf277e6b80 (diff)
downloadphp-git-7735226e365365a1ccae01158b2fb62d0b06ed16.tar.gz
Fixed memory leak in php_uname
-rw-r--r--ext/standard/info.c15
-rw-r--r--ext/standard/info.h2
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()