mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix bug #71501
This commit is contained in:
parent
cdf99ffc69
commit
ace71b4c5f
3 changed files with 60 additions and 33 deletions
3
NEWS
3
NEWS
|
@ -25,6 +25,9 @@ PHP NEWS
|
|||
- Standard:
|
||||
. Fixed bug #70720 (strip_tags improper php code parsing). (Julien)
|
||||
|
||||
- XMLRPC:
|
||||
. Fixed bug #71501 (xmlrpc_encode_request ignores encoding option). (Hieu Le)
|
||||
|
||||
04 Feb 2016 PHP 7.0.3
|
||||
|
||||
- Core:
|
||||
|
|
23
ext/xmlrpc/tests/bug71501.phpt
Normal file
23
ext/xmlrpc/tests/bug71501.phpt
Normal file
|
@ -0,0 +1,23 @@
|
|||
--TEST--
|
||||
Bug #71501 (xmlrpc_encode_request ignores encoding option)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("xmlrpc")) print "skip";
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$params = 'Lê Trung Hiếu';
|
||||
echo xmlrpc_encode_request('foo', $params, ['encoding' => 'UTF-8', 'escaping' => 'markup']);
|
||||
?>
|
||||
--EXPECTF--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<methodCall>
|
||||
<methodName>foo</methodName>
|
||||
<params>
|
||||
<param>
|
||||
<value>
|
||||
<string>Lê Trung Hiếu</string>
|
||||
</value>
|
||||
</param>
|
||||
</params>
|
||||
</methodCall>
|
|
@ -411,45 +411,46 @@ static void set_output_options(php_output_options* options, zval* output_opts)
|
|||
}
|
||||
}
|
||||
|
||||
/* encoding code set */
|
||||
if ((val = zend_hash_str_find(Z_ARRVAL_P(output_opts), ENCODING_KEY, ENCODING_KEY_LEN)) != NULL) {
|
||||
if (Z_TYPE_P(val) == IS_STRING) {
|
||||
options->xmlrpc_out.xml_elem_opts.encoding = estrdup(Z_STRVAL_P(val));
|
||||
}
|
||||
}
|
||||
|
||||
/* encoding code set */
|
||||
if ((val = zend_hash_str_find(Z_ARRVAL_P(output_opts), ENCODING_KEY, ENCODING_KEY_LEN)) != NULL) {
|
||||
if (Z_TYPE_P(val) == IS_STRING) {
|
||||
options->xmlrpc_out.xml_elem_opts.encoding = estrdup(Z_STRVAL_P(val));
|
||||
}
|
||||
}
|
||||
|
||||
/* escaping options */
|
||||
if ((val = zend_hash_str_find(Z_ARRVAL_P(output_opts), ESCAPING_KEY, ESCAPING_KEY_LEN)) != NULL) {
|
||||
/* multiple values allowed. check if array */
|
||||
if (Z_TYPE_P(val) == IS_ARRAY) {
|
||||
zval* iter_val;
|
||||
/* escaping options */
|
||||
if ((val = zend_hash_str_find(Z_ARRVAL_P(output_opts), ESCAPING_KEY, ESCAPING_KEY_LEN)) != NULL) {
|
||||
/* multiple values allowed. check if array */
|
||||
if (Z_TYPE_P(val) == IS_ARRAY) {
|
||||
zval* iter_val;
|
||||
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_no_escaping;
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_no_escaping;
|
||||
|
||||
ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(val), iter_val) {
|
||||
if (Z_TYPE_P(iter_val) == IS_STRING && Z_STRVAL_P(iter_val)) {
|
||||
if (!strcmp(Z_STRVAL_P(iter_val), ESCAPING_VALUE_CDATA)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_cdata_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(iter_val), ESCAPING_VALUE_NON_ASCII)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_ascii_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(iter_val), ESCAPING_VALUE_NON_PRINT)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_print_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(iter_val), ESCAPING_VALUE_MARKUP)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_markup_escaping;
|
||||
}
|
||||
ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(val), iter_val) {
|
||||
if (Z_TYPE_P(iter_val) == IS_STRING && Z_STRVAL_P(iter_val)) {
|
||||
if (!strcmp(Z_STRVAL_P(iter_val), ESCAPING_VALUE_CDATA)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_cdata_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(iter_val), ESCAPING_VALUE_NON_ASCII)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_ascii_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(iter_val), ESCAPING_VALUE_NON_PRINT)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_non_print_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(iter_val), ESCAPING_VALUE_MARKUP)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping |= xml_elem_markup_escaping;
|
||||
}
|
||||
} ZEND_HASH_FOREACH_END();
|
||||
/* else, check for single value */
|
||||
} else if (Z_TYPE_P(val) == IS_STRING) {
|
||||
if (!strcmp(Z_STRVAL_P(val), ESCAPING_VALUE_CDATA)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_cdata_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(val), ESCAPING_VALUE_NON_ASCII)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_non_ascii_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(val), ESCAPING_VALUE_NON_PRINT)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_non_print_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(val), ESCAPING_VALUE_MARKUP)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_markup_escaping;
|
||||
}
|
||||
} ZEND_HASH_FOREACH_END();
|
||||
/* else, check for single value */
|
||||
} else if (Z_TYPE_P(val) == IS_STRING) {
|
||||
if (!strcmp(Z_STRVAL_P(val), ESCAPING_VALUE_CDATA)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_cdata_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(val), ESCAPING_VALUE_NON_ASCII)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_non_ascii_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(val), ESCAPING_VALUE_NON_PRINT)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_non_print_escaping;
|
||||
} else if (!strcmp(Z_STRVAL_P(val), ESCAPING_VALUE_MARKUP)) {
|
||||
options->xmlrpc_out.xml_elem_opts.escaping = xml_elem_markup_escaping;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue