summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2011-05-09 16:20:35 +0000
committerAndrey Hristov <andrey@php.net>2011-05-09 16:20:35 +0000
commitd4ae5bd9955cbbd80fd9e70d4e6b36004e39fc2c (patch)
tree056ab45d771b417b28c1297e18fbd1316b52cacb
parent410a781063aaa3ab55e59d19ed354d20e0d827ff (diff)
downloadphp-git-d4ae5bd9955cbbd80fd9e70d4e6b36004e39fc2c.tar.gz
Fix for bug 54674..typo in the check of SJIS
-rw-r--r--ext/mysqli/tests/bug54674.phpt31
-rw-r--r--ext/mysqlnd/mysqlnd_charset.c6
2 files changed, 33 insertions, 4 deletions
diff --git a/ext/mysqli/tests/bug54674.phpt b/ext/mysqli/tests/bug54674.phpt
new file mode 100644
index 0000000000..efc67308b6
--- /dev/null
+++ b/ext/mysqli/tests/bug54674.phpt
@@ -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!
diff --git a/ext/mysqlnd/mysqlnd_charset.c b/ext/mysqlnd/mysqlnd_charset.c
index 18208f215d..9074baeca0 100644
--- a/ext/mysqlnd/mysqlnd_charset.c
+++ b/ext/mysqlnd/mysqlnd_charset.c
@@ -327,10 +327,8 @@ 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))
+#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)