diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2006-07-28 14:23:35 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2006-07-28 14:23:35 +0000 |
commit | 726dee9ee336d0d4ec17f9937356781b45bf1628 (patch) | |
tree | 734af52ed573af009dcf4a8a37660063c1c21a8b | |
parent | 3a78dce03205d820122231d4f62e3e0d9a9a7a1f (diff) | |
download | php-git-726dee9ee336d0d4ec17f9937356781b45bf1628.tar.gz |
ext/standard/info.c ext/standard/info.h
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | ext/standard/info.c | 30 | ||||
-rw-r--r-- | ext/standard/info.h | 1 |
3 files changed, 19 insertions, 13 deletions
@@ -15,6 +15,7 @@ PHP NEWS . Fixed bug #37564 (AES privacy encryption not possible due to net-snmp 5.2 compatibility issue). (Patch: scott dot moynes+php at gmail dot com) +- Fixed phpinfo() cutoff of variables at \0. (Ilia) - Fixed a bug in the filter extension that prevented magic_quotes_gpc from being applied when RAW filter is used. (Ilia) - Fixed bug #38236 (Binary data gets corrupted on multipart/formdata POST). diff --git a/ext/standard/info.c b/ext/standard/info.c index 13d15d84c0..f4d0d8754c 100644 --- a/ext/standard/info.c +++ b/ext/standard/info.c @@ -114,7 +114,6 @@ static void php_print_gpcse_array(char *name, uint name_length TSRMLS_DC) char *string_key; uint string_len; ulong num_key; - char *elem_esc = NULL; zend_is_auto_global(name, name_length TSRMLS_CC); @@ -134,11 +133,9 @@ static void php_print_gpcse_array(char *name, uint name_length TSRMLS_DC) switch (zend_hash_get_current_key_ex(Z_ARRVAL_PP(data), &string_key, &string_len, &num_key, 0, NULL)) { case HASH_KEY_IS_STRING: if (!sapi_module.phpinfo_as_text) { - elem_esc = php_info_html_esc(string_key TSRMLS_CC); - PUTS(elem_esc); - efree(elem_esc); + php_info_html_esc_write(string_key, string_len TSRMLS_CC); } else { - PUTS(string_key); + PHPWRITE(string_key, string_len); } break; case HASH_KEY_IS_LONG: @@ -167,12 +164,10 @@ static void php_print_gpcse_array(char *name, uint name_length TSRMLS_DC) if (Z_STRLEN(tmp2) == 0) { PUTS("<i>no value</i>"); } else { - elem_esc = php_info_html_esc(Z_STRVAL(tmp2) TSRMLS_CC); - PUTS(elem_esc); - efree(elem_esc); + php_info_html_esc_write(Z_STRVAL(tmp2), Z_STRLEN(tmp2) TSRMLS_CC); } } else { - PUTS(Z_STRVAL(tmp2)); + PHPWRITE(Z_STRVAL(tmp2), Z_STRLEN(tmp2)); } zval_dtor(&tmp2); } else { @@ -180,12 +175,10 @@ static void php_print_gpcse_array(char *name, uint name_length TSRMLS_DC) if (Z_STRLEN_PP(tmp) == 0) { PUTS("<i>no value</i>"); } else { - elem_esc = php_info_html_esc(Z_STRVAL_PP(tmp) TSRMLS_CC); - PUTS(elem_esc); - efree(elem_esc); + php_info_html_esc_write(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp) TSRMLS_CC); } } else { - PUTS(Z_STRVAL_PP(tmp)); + PHPWRITE(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp)); } } if (!sapi_module.phpinfo_as_text) { @@ -209,6 +202,17 @@ void php_info_print_style(TSRMLS_D) } /* }}} */ +/* {{{ php_info_html_esc_write + */ +PHPAPI void php_info_html_esc_write(char *string, int str_len TSRMLS_DC) +{ + int new_len; + char *ret = php_escape_html_entities(string, str_len, &new_len, 0, ENT_QUOTES, NULL TSRMLS_CC); + + PHPWRITE(ret, new_len); + efree(ret); +} +/* }}} */ /* {{{ php_info_html_esc */ diff --git a/ext/standard/info.h b/ext/standard/info.h index 63c22a34c4..2fd2731454 100644 --- a/ext/standard/info.h +++ b/ext/standard/info.h @@ -67,6 +67,7 @@ PHP_FUNCTION(php_sapi_name); PHP_FUNCTION(php_uname); PHP_FUNCTION(php_ini_scanned_files); PHPAPI char *php_info_html_esc(char *string TSRMLS_DC); +PHPAPI void php_info_html_esc_write(char *string, int str_len TSRMLS_DC); PHPAPI void php_print_info_htmlhead(TSRMLS_D); PHPAPI void php_print_info(int flag TSRMLS_DC); PHPAPI void php_print_style(void); |