Merge pull request #4573 from dearblue/fix-4569

Fix heap buffer overflow; fix #4569
This commit is contained in:
Yukihiro "Matz" Matsumoto
2019-07-12 21:46:02 +09:00
committed by GitHub
+12 -14
View File
@@ -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;
}
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);
if (memcmp(p, s, slen) == 0) {
return off;
}
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);
}
return -1;