From 2b35d80834f14011f7d313f8fac7855dc9949f70 Mon Sep 17 00:00:00 2001 From: nagachika Date: Sat, 6 Jul 2024 15:55:04 +0900 Subject: [PATCH] merge revision(s) 75aaeb35b82da26359b9418d2963384d0c55839c: [Backport #20239] [Bug #20239] Fix overflow at down-casting --- regenc.c | 2 +- regexec.c | 2 +- version.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/regenc.c b/regenc.c index fc131d2533..eb523e1ae5 100644 --- a/regenc.c +++ b/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); if (ONIGENC_MBCLEN_CHARFOUND_P(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; } else if (ONIGENC_MBCLEN_NEEDMORE_P(ret)) { diff --git a/regexec.c b/regexec.c index 549cacb473..47fc88c9c2 100644 --- a/regexec.c +++ b/regexec.c @@ -3293,7 +3293,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, n = pend - pstart; DATA_ENSURE(n); 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_approx(encode, sprev, end)) < s) sprev += len; diff --git a/version.h b/version.h index 18bc0ae137..750de53ec3 100644 --- a/version.h +++ b/version.h @@ -11,7 +11,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 4 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 182 +#define RUBY_PATCHLEVEL 183 #include "ruby/version.h" #include "ruby/internal/abi.h"