cataphract                               Mon, 05 Sep 2011 00:39:39 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=316124

Log:
- Fixed bad xor in signed types due to integer promotion.
- Replaced undefined signed overflow with char -> unsigned char conversion.

Changed paths:
    U   php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_charset.c
    U   php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_charset.c
    U   php/php-src/trunk/ext/mysqlnd/mysqlnd_charset.c

Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_charset.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_charset.c  2011-09-04 
23:44:00 UTC (rev 316123)
+++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_charset.c  2011-09-05 
00:39:39 UTC (rev 316124)
@@ -122,11 +122,11 @@
                  [F4][80..8F][80..BF][80..BF]
                */

-               if (!((start[1] ^ 0x80) < 0x40 &&
-                       (start[2] ^ 0x80) < 0x40 &&
-                       (start[3] ^ 0x80) < 0x40 &&
-                               (c >= 0xf1 || start[1] >= (char)0x90) &&
-                               (c <= 0xf3 || start[1] <= (char)0x8F)))
+               if (!(((zend_uchar)start[1] ^ 0x80) < 0x40 &&
+                       ((zend_uchar)start[2] ^ 0x80) < 0x40 &&
+                       ((zend_uchar)start[3] ^ 0x80) < 0x40 &&
+                               (c >= 0xf1 || (zend_uchar)start[1] >= 0x90) &&
+                               (c <= 0xf3 || (zend_uchar)start[1] <= 0x8F)))
                {
                        return 0;       /* invalid utf8 character */
                }

Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_charset.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_charset.c  2011-09-04 
23:44:00 UTC (rev 316123)
+++ php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd_charset.c  2011-09-05 
00:39:39 UTC (rev 316124)
@@ -123,11 +123,11 @@
                  [F4][80..8F][80..BF][80..BF]
                */

-               if (!((start[1] ^ 0x80) < 0x40 &&
-                       (start[2] ^ 0x80) < 0x40 &&
-                       (start[3] ^ 0x80) < 0x40 &&
-                               (c >= 0xf1 || start[1] >= (char)0x90) &&
-                               (c <= 0xf3 || start[1] <= (char)0x8F)))
+               if (!(((zend_uchar)start[1] ^ 0x80) < 0x40 &&
+                       ((zend_uchar)start[2] ^ 0x80) < 0x40 &&
+                       ((zend_uchar)start[3] ^ 0x80) < 0x40 &&
+                               (c >= 0xf1 || (zend_uchar)start[1] >= 0x90) &&
+                               (c <= 0xf3 || (zend_uchar)start[1] <= 0x8F)))
                {
                        return 0;       /* invalid utf8 character */
                }

Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_charset.c
===================================================================
--- php/php-src/trunk/ext/mysqlnd/mysqlnd_charset.c     2011-09-04 23:44:00 UTC 
(rev 316123)
+++ php/php-src/trunk/ext/mysqlnd/mysqlnd_charset.c     2011-09-05 00:39:39 UTC 
(rev 316124)
@@ -123,11 +123,11 @@
                  [F4][80..8F][80..BF][80..BF]
                */

-               if (!((start[1] ^ 0x80) < 0x40 &&
-                       (start[2] ^ 0x80) < 0x40 &&
-                       (start[3] ^ 0x80) < 0x40 &&
-                               (c >= 0xf1 || start[1] >= (char)0x90) &&
-                               (c <= 0xf3 || start[1] <= (char)0x8F)))
+               if (!(((zend_uchar)start[1] ^ 0x80) < 0x40 &&
+                       ((zend_uchar)start[2] ^ 0x80) < 0x40 &&
+                       ((zend_uchar)start[3] ^ 0x80) < 0x40 &&
+                               (c >= 0xf1 || (zend_uchar)start[1] >= 0x90) &&
+                               (c <= 0xf3 || (zend_uchar)start[1] <= 0x8F)))
                {
                        return 0;       /* invalid utf8 character */
                }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to