[Bug #20239] Fix overflow at down-casting
This commit is contained in:
parent
8bd83bb133
commit
75aaeb35b8
2
regenc.c
2
regenc.c
@ -57,7 +57,7 @@ onigenc_mbclen(const OnigUChar* p,const OnigUChar* e, OnigEncoding enc)
|
|||||||
int ret = ONIGENC_PRECISE_MBC_ENC_LEN(enc, p, e);
|
int ret = ONIGENC_PRECISE_MBC_ENC_LEN(enc, p, e);
|
||||||
if (ONIGENC_MBCLEN_CHARFOUND_P(ret)) {
|
if (ONIGENC_MBCLEN_CHARFOUND_P(ret)) {
|
||||||
ret = ONIGENC_MBCLEN_CHARFOUND_LEN(ret);
|
ret = ONIGENC_MBCLEN_CHARFOUND_LEN(ret);
|
||||||
if (ret > (int)(e - p)) ret = (int)(e - p); // just for case
|
if (p + ret > e) ret = (int)(e - p); // just for case
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
else if (ONIGENC_MBCLEN_NEEDMORE_P(ret)) {
|
else if (ONIGENC_MBCLEN_NEEDMORE_P(ret)) {
|
||||||
|
@ -3521,7 +3521,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
|||||||
n = pend - pstart;
|
n = pend - pstart;
|
||||||
DATA_ENSURE(n);
|
DATA_ENSURE(n);
|
||||||
sprev = s;
|
sprev = s;
|
||||||
STRING_CMP_IC(case_fold_flag, pstart, &s, (int)n, end);
|
STRING_CMP_IC(case_fold_flag, pstart, &s, n, end);
|
||||||
while (sprev + (len = enclen(encode, sprev, end)) < s)
|
while (sprev + (len = enclen(encode, sprev, end)) < s)
|
||||||
sprev += len;
|
sprev += len;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user