From:             pierre-marie dot mouliere at arc-intl dot com
Operating system: HPUX
PHP version:      4.3.3
PHP Bug Type:     WDDX related
Bug description:  PB serialization ascii code greater than 127

Description:
------------
Hi,
There's a little bug with strings serialization, for strings containing
characters with ascii code greater than 127 (with HP-UX v11).

We found that the problem is located in function  :
php_wddx_serialize_string.
There is a line of code like :
     if (iscntrl((int)*p) {
When casting character (*p) to int for values greater than 127 (witch are
considered negative) there is a sign extension so character 'ρ'(ascii code
0xf0) become integer 0xfffffff0.
But the function iscntrl expects an integrer between 0 and 255, or the
result is unpredictable.
The problem can be fixed by modifying the line above like :
     if(iscntrl((int)(unsigned char)*p) {       
Best Regards
Pierre-Marie MOULIERE

Reproduce code:
---------------
<?php
print "<u>Without locale :</u><br><br>";
print "ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ Ρ" . "<br>\n";
print wddx_deserialize(wddx_serialize_value("ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ
Ρ")); 
print "<br><hr><br>";
print "<u>With locale (fr_FR.iso88591) :</u><br><br>";
setlocale(LC_CTYPE, "fr_FR.iso88591");
print "ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ Ρ" . "<br>\n";
print wddx_deserialize(wddx_serialize_value("ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ
Ρ")); 
?>      


Expected result:
----------------
Result : 
Without locale :

ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ Ρ
ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ Ρ

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

With locale (fr_FR.iso88591) :

ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ Ρ
ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ Ρ



Actual result:
--------------
Result : 
Without locale :

ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ Ρ
ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ? Ρ
                
-----------------------------------------------------------
                
With locale (fr_FR.iso88591) :
                
ΰβδηιθκλξοτω ΐΒΔΙΘΚΛΞΟΤΩ ρ Ρ
ΰβδηιθκλξοτω ΐΒΔ?ΘΚΛΞΟΤΩ ρ Ρ    

-- 
Edit bug report at http://bugs.php.net/?id=26300&edit=1
-- 
Try a CVS snapshot (php4):  http://bugs.php.net/fix.php?id=26300&r=trysnapshot4
Try a CVS snapshot (php5):  http://bugs.php.net/fix.php?id=26300&r=trysnapshot5
Fixed in CVS:               http://bugs.php.net/fix.php?id=26300&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=26300&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=26300&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=26300&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=26300&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=26300&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=26300&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=26300&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=26300&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=26300&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=26300&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=26300&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=26300&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=26300&r=float

Reply via email to