BUG#11392 - fulltext search bug

Fulltext boolean mode phrase search may crash server on platforms
where size of pointer is not equal to size of unsigned integer
(in other words some 64-bit platforms).

The problem was integer overflow.

Affects 4.1 only.
parent 0253d787
...@@ -446,7 +446,8 @@ static int _ftb_strstr(const byte *s0, const byte *e0, ...@@ -446,7 +446,8 @@ static int _ftb_strstr(const byte *s0, const byte *e0,
{ {
if (cs->coll->instr(cs, p0, e0 - p0, s1, e1 - s1, m, 2) != 2) if (cs->coll->instr(cs, p0, e0 - p0, s1, e1 - s1, m, 2) != 2)
return(0); return(0);
if ((!s_after || p0 + m[1].beg == s0 || !true_word_char(cs, p0[m[1].beg-1])) && if ((!s_after || p0 + m[1].beg == s0 ||
!true_word_char(cs, p0[(int) m[1].beg - 1])) &&
(!e_before || p0 + m[1].end == e0 || !true_word_char(cs, p0[m[1].end]))) (!e_before || p0 + m[1].end == e0 || !true_word_char(cs, p0[m[1].end])))
return(1); return(1);
p0+= m[1].beg; p0+= m[1].beg;
......
...@@ -454,3 +454,9 @@ ALTER TABLE t1 DISABLE KEYS; ...@@ -454,3 +454,9 @@ ALTER TABLE t1 DISABLE KEYS;
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test'); SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
ERROR HY000: Can't find FULLTEXT index matching the column list ERROR HY000: Can't find FULLTEXT index matching the column list
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a TEXT);
INSERT INTO t1 VALUES(' aaaaa aaaa');
SELECT * FROM t1 WHERE MATCH(a) AGAINST ('"aaaa"' IN BOOLEAN MODE);
a
aaaaa aaaa
DROP TABLE t1;
...@@ -379,4 +379,12 @@ ALTER TABLE t1 DISABLE KEYS; ...@@ -379,4 +379,12 @@ ALTER TABLE t1 DISABLE KEYS;
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test'); SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
DROP TABLE t1; DROP TABLE t1;
#
# BUG#11392 - fulltext search bug
#
CREATE TABLE t1(a TEXT);
INSERT INTO t1 VALUES(' aaaaa aaaa');
SELECT * FROM t1 WHERE MATCH(a) AGAINST ('"aaaa"' IN BOOLEAN MODE);
DROP TABLE t1;
# End of 4.1 tests # End of 4.1 tests
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment