ID:               38839
 User updated by:  rob at choralone dot org
 Reported By:      rob at choralone dot org
-Status:           Feedback
+Status:           Open
 Bug Type:         WDDX related
 Operating System: Linux
 PHP Version:      4.4.4
 New Comment:

Yes, that's fixed it - thank you.

For anyone else interested, this is the patch I'm bundling in our
company RPM build of php 4.4.4 that fixes the issue:

--- php-4.4.4/ext/wddx/wddx.c   2006-05-26 02:55:26.000000000 +0100
+++ php-4.4.4/ext/wddx/wddx-new.c       2006-08-24 09:32:37.000000000
+0100
@@ -16,7 +16,7 @@
   
+----------------------------------------------------------------------+
  */

-/* $Id: wddx.c,v 1.96.2.6.2.7 2006/05/26 01:55:26 iliaa Exp $ */
+/* $Id: wddx.c,v 1.96.2.6.2.8 2006/08/24 08:30:28 tony2001 Exp $ */

 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -432,7 +432,7 @@
        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 @@

        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);


Previous Comments:
------------------------------------------------------------------------

[2006-09-15 10:04:36] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php4-STABLE-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php4-win32-STABLE-latest.zip



------------------------------------------------------------------------

[2006-09-15 09:56:43] rob at choralone dot org

Description:
------------
wddx_serialize_value() produces bad wddx data when serializing an
associative array.

This first started happening with PHP 4.4.3, so I suspect the fix for
bug #37569 (WDDX incorrectly encodes high-ascii characters) probably
broke it.

Reproduce code:
---------------
<?php
$data = array('foo' => 'bar');
print(wddx_serialize_value($data));
?>

Expected result:
----------------
<wddxPacket version='1.0'><header/><data><struct><var
name='foo'><string>bar</string></var></struct></data></wddxPacket>

run through xml tidy to make it readable:

<wddxPacket version='1.0'>
  <header/>
  <data>
    <struct>
      <var name='foo'>
        <string>bar</string>
      </var>
    </struct>
  </data>
</wddxPacket>

Actual result:
--------------
<wddxPacket
version='1.0'><header/><data><struct><va<string>bar</string></var></struct></data></wddxPacket>

run through xml tidy to make it readable:

<wddxPacket version='1.0'>
  <header/>
  <data>
    <struct>
      <va<string>bar</string></var>
    </struct>
  </data>
</wddxPacket>


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=38839&edit=1

Reply via email to