]> granicus.if.org Git - php/commitdiff
Fix for bug 54674..typo in the check of SJIS
authorAndrey Hristov <andrey@php.net>
Mon, 9 May 2011 16:20:35 +0000 (16:20 +0000)
committerAndrey Hristov <andrey@php.net>
Mon, 9 May 2011 16:20:35 +0000 (16:20 +0000)
ext/mysqli/tests/bug54674.phpt [new file with mode: 0644]
ext/mysqlnd/mysqlnd_charset.c

diff --git a/ext/mysqli/tests/bug54674.phpt b/ext/mysqli/tests/bug54674.phpt
new file mode 100644 (file)
index 0000000..efc6730
--- /dev/null
@@ -0,0 +1,31 @@
+--TEST--
+Bug #54674 mysqlnd valid_sjis_(head|tail) is using invalid operator and range.
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--INI--
+mysqli.max_links = 1
+mysqli.allow_persistent = Off
+mysqli.max_persistent = 0
+mysqli.reconnect = Off
+--FILE--
+<?php
+       include ("connect.inc");
+
+       $link = mysqli_init();
+       if (!my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket)) {
+               printf("[002] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
+       }
+
+       $japanese_so = pack('H4', '835c');
+       $link->set_charset('sjis');
+       var_dump($link->real_escape_string($japanese_so) === $japanese_so);
+       mysqli_close($link);
+
+       print "done!";
+?>
+--EXPECTF--
+bool(true)
+done!
index 0e1b387a5f1addfbe1faa0325ae4a52d1df14fb5..a75861ccaeec91966960059d539f64bdb2c62809 100644 (file)
@@ -325,11 +325,9 @@ static unsigned int mysqlnd_mbcharlen_gbk(unsigned int gbk)
 /* }}} */
 
 
-/* {{{ sjis functions */
-#define valid_sjis_head(c)     ((0x81 <= (c) && (c) <= 0x9F) && \
-                                                        (0xE0 <= (c) && (c) <= 0xFC))
-#define valid_sjis_tail(c)     ((0x40 <= (c) && (c) <= 0x7E) && \
-                                                        (0x80 <= (c) && (c) <= 0x7C))
+/* {{{  functions */
+#define valid_sjis_head(c)     ((0x81 <= (c) && (c) <= 0x9F) || (0xE0 <= (c) && (c) <= 0xFC))
+#define valid_sjis_tail(c)     ((0x40 <= (c) && (c) <= 0x7E) || (0x80 <= (c) && (c) <= 0x7C))
 
 
 static unsigned int check_mb_sjis(const char *start, const char *end)