From 1d2e5068ca82231ed8ee46ed0cff691188933eaf Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Thu, 24 Aug 2006 08:30:28 +0000 Subject: [PATCH] fix #38378 (wddx_serialize_value() generates no wellformed xml) --- NEWS | 2 ++ ext/wddx/tests/bug38738.phpt | 12 ++++++++++++ ext/wddx/wddx.c | 6 +++--- 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 ext/wddx/tests/bug38738.phpt diff --git a/NEWS b/NEWS index 46f334349b..68a3209c51 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,8 @@ PHP 4 NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 2006, Version 4.4.5 +- Fixed bug #38378 (wddx_serialize_value() generates no wellformed xml). + (sj at sjaensch dot org, grzegorz dot nosek at netart dot pl, Tony). 17 Aug 2006, Version 4.4.4 - Fixed memory_limit on 64bit systems. (Stefan E.) diff --git a/ext/wddx/tests/bug38738.phpt b/ext/wddx/tests/bug38738.phpt new file mode 100644 index 0000000000..1a20e6ddd0 --- /dev/null +++ b/ext/wddx/tests/bug38738.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #38378 (wddx_serialize_vars() generates no wellformed xml) +--FILE-- + +--EXPECT-- +string(204) "
1test" diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c index 870298895c..ffca16bb39 100644 --- a/ext/wddx/wddx.c +++ b/ext/wddx/wddx.c @@ -432,7 +432,7 @@ static void php_wddx_serialize_number(wddx_packet *packet, zval *var) tmp = *var; zval_copy_ctor(&tmp); convert_to_string(&tmp); - snprintf(tmp_buf, Z_STRLEN(tmp), WDDX_NUMBER, Z_STRVAL(tmp)); + snprintf(tmp_buf, sizeof(tmp_buf), WDDX_NUMBER, Z_STRVAL(tmp)); zval_dtor(&tmp); php_wddx_add_chunk(packet, tmp_buf); @@ -630,8 +630,8 @@ void php_wddx_serialize_var(wddx_packet *packet, zval *var, char *name, int name if (name) { name_esc = php_escape_html_entities(name, name_len, &name_esc_len, 0, ENT_QUOTES, NULL TSRMLS_CC); - tmp_buf = emalloc(name_esc_len + 1); - snprintf(tmp_buf, name_esc_len, WDDX_VAR_S, name_esc); + tmp_buf = emalloc(name_esc_len + sizeof(WDDX_VAR_S)); + snprintf(tmp_buf, name_esc_len + sizeof(WDDX_VAR_S), WDDX_VAR_S, name_esc); php_wddx_add_chunk(packet, tmp_buf); efree(tmp_buf); efree(name_esc); -- 2.50.1