Commit bde2f35a authored by dearblue's avatar dearblue

Fix heap buffer overflow; fix #4569

parent c5f0a025
......@@ -324,22 +324,20 @@ str_index_str_by_char_search(mrb_state *mrb, const char *p, const char *pend, co
}
/* Searching */
if (p < pend && pend - p >= slen) {
for (;;) {
const char *pivot;
while (p < pend && pend - p >= slen) {
const char *pivot;
if (memcmp(p, s, slen) == 0) {
return off;
}
if (memcmp(p, s, slen) == 0) {
return off;
}
pivot = p + qstable[(unsigned char)p[slen - 1]];
if (pivot > pend || pivot < p /* overflowed */) { return -1; }
pivot = p + qstable[(unsigned char)p[slen - 1]];
if (pivot > pend || pivot < p /* overflowed */) { return -1; }
do {
p += utf8len(p, pend);
off ++;
} while (p < pivot);
}
do {
p += utf8len(p, pend);
off ++;
} while (p < pivot);
}
return -1;
......
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