diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2017-08-13 20:53:32 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2017-08-13 21:03:45 +0200 |
commit | 207105b1a3844cf4d3fd5f17e17ddbd6804e1938 (patch) | |
tree | 111e8a8377b68b92f5757cd4ee60accb27b49035 | |
parent | de5a5f6fdcf21d57a5a96d51baa48d84c5c58c99 (diff) | |
parent | f64be0b0135f742df31bc97dd3c04f84f342878e (diff) | |
download | php-git-207105b1a3844cf4d3fd5f17e17ddbd6804e1938.tar.gz |
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0:
Fixed bug #73793 (WDDX uses wrong decimal seperator)
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | ext/wddx/tests/bug73793.phpt | 18 | ||||
-rw-r--r-- | ext/wddx/wddx.c | 6 |
3 files changed, 26 insertions, 1 deletions
@@ -65,6 +65,9 @@ PHP NEWS . Fixed bug #75054 (A Denial of Service Vulnerability was found when performing deserialization). (Nikita) +- WDDX: + . Fixed bug #73793 (WDDX uses wrong decimal seperator). (cmb) + - XMLRPC: . Fixed bug #74975 (Incorrect xmlrpc serialization for classes with declared properties). (blar) diff --git a/ext/wddx/tests/bug73793.phpt b/ext/wddx/tests/bug73793.phpt new file mode 100644 index 0000000000..fed4b3525f --- /dev/null +++ b/ext/wddx/tests/bug73793.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #73793 (WDDX uses wrong decimal seperator) +--SKIPIF-- +<?php +if (!extension_loaded('wddx')) print 'skip wddx extension not available'; +if (setlocale(LC_NUMERIC, ['de_DE', 'de_DE.UTF-8', 'de-DE']) === false) { + print 'skip German locale not available'; +} +?> +--FILE-- +<?php +setlocale(LC_NUMERIC , ['de_DE', 'de_DE.UTF-8', 'de-DE']); +var_dump(wddx_serialize_value(['foo' => 5.1])); +?> +===DONE=== +--EXPECT-- +string(120) "<wddxPacket version='1.0'><header/><data><struct><var name='foo'><number>5.1</number></var></struct></data></wddxPacket>" +===DONE=== diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c index 4a0a9e9b32..62b6a1c748 100644 --- a/ext/wddx/wddx.c +++ b/ext/wddx/wddx.c @@ -420,11 +420,15 @@ static void php_wddx_serialize_string(wddx_packet *packet, zval *var) */ static void php_wddx_serialize_number(wddx_packet *packet, zval *var) { - char tmp_buf[WDDX_BUF_LEN]; + char tmp_buf[WDDX_BUF_LEN], *dec_point; zend_string *str = zval_get_string(var); snprintf(tmp_buf, sizeof(tmp_buf), WDDX_NUMBER, ZSTR_VAL(str)); zend_string_release(str); + dec_point = strchr(tmp_buf, ','); + if (dec_point) { + *dec_point = '.'; + } php_wddx_add_chunk(packet, tmp_buf); } /* }}} */ |