RE: [PHP-CVS] cvs: php-src(PHP_5_0) /ext/soap php_encoding.c

From: Date: Wed, 08 Sep 2004 16:45:20 +0000
Subject: RE: [PHP-CVS] cvs: php-src(PHP_5_0) /ext/soap php_encoding.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-28602@lists.php.net to get a copy of this message
OK, so please #if it with libxml2 version number once it is clear what the next version is. Thanks, Andi At 09:17 AM 9/8/2004 +0400, Dmitry Stogov wrote:
The bug is fixed in libxml2 CVS HEAD, but it exists in latest stable version. Dmitry. -----Original Message----- From: Andi Gutmans [mailto:andi@zend.com] Sent: Tuesday, September 07, 2004 22:51 To: Dmitry Stogov; php-cvs@lists.php.net Subject: Re: [PHP-CVS] cvs: php-src(PHP_5_0) /ext/soap php_encoding.c Is this fixed in libxml2? If so, maybe you should put a version check around these functions so that it's clear why this code exists (and so that we can nuke it in future?) Andi At 02:41 PM 9/7/2004 +0000, Dmitry Stogov wrote:
dmitry          Tue Sep  7 10:41:29 2004 EDT
  Modified files:              (Branch: PHP_5_0)
    /php-src/ext/soap   php_encoding.c
Log: Make ext/soap work around libxml2 bug in xmlCheckUTF8
(2.6.7-2.6.13)
http://cvs.php.net/diff.php/php-src/ext/soap/php_encoding.c?r
1=1.71.2.3
&r2=1.71.2.4&ty=u Index: php-src/ext/soap/php_encoding.c diff -u php-src/ext/soap/php_encoding.c:1.71.2.3 php-src/ext/soap/php_encoding.c:1.71.2.4
--- php-src/ext/soap/php_encoding.c:1.71.2.3    Thu Aug 26
14:36:46 2004
+++ php-src/ext/soap/php_encoding.c     Tue Sep  7 10:41:29 2004
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <dmitry@zend.com>
|
+------------------------------------------------------------
----------+
*/ -/* $Id: php_encoding.c,v 1.71.2.3 2004/08/26 18:36:46
dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.71.2.4 2004/09/07 14:41:29
dmitry Exp $ */
#include <time.h> @@ -581,6 +581,32 @@
        return ret;
} +static int php_soap_xmlCheckUTF8(const unsigned char *s) +{
+       int i;
+       unsigned char c;
+
+       for (i = 0; (c = s[i++]);) {
+               if ((c & 0x80) == 0) {
+               } else if ((c & 0xe0) == 0xc0) {
+                       if ((s[i++] & 0xc0) != 0x80) {
+                               return 0;
+                       }
+               } else if ((c & 0xf0) == 0xe0) {
+                       if ((s[i++] & 0xc0) != 0x80 ||
(s[i++] & 0xc0)
+ != 0x80) {
+                               return 0;
+                       }
+               } else if ((c & 0xf8) == 0xf0) {
+                       if ((s[i++] & 0xc0) != 0x80 ||
(s[i++] & 0xc0)
+ != 0x80 || (s[i++] & 0xc0) != 0x80) {
+                               return 0;
+                       }
+               } else {
+                       return 0;
+               }
+       }
+       return 1;
+} + static xmlNodePtr to_xml_string(encodeTypePtr type, zval *data, int style, xmlNodePtr parent) {
        xmlNodePtr ret;
@@ -612,12 +638,12 @@
                        efree(str);
                        str = estrdup(xmlBufferContent(out));
                        new_len = n;
-               } else if (!xmlCheckUTF8(str)) {
+               } else if (!php_soap_xmlCheckUTF8(str)) {
                        soap_error1(E_ERROR,  "Encoding:
string '%s'
is not a valid utf-8 string", str);
                }
                xmlBufferFree(out);
                xmlBufferFree(in);
-       } else if (!xmlCheckUTF8(str)) {
+       } else if (!php_soap_xmlCheckUTF8(str)) {
                soap_error1(E_ERROR,  "Encoding: string
'%s' is not a
valid utf-8 string", str);
        }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.cvs (#28602) next »