Merge pull request #89671 from alesliehughes/string_underrun

Stop possible underrun when processing a string
This commit is contained in:
Rémi Verschelde 2024-03-24 01:21:12 +01:00
commit 8f9136963d
No known key found for this signature in database
GPG Key ID: C3336907360768E1
1 changed files with 2 additions and 2 deletions

View File

@ -1871,7 +1871,7 @@ Error String::parse_utf8(const char *p_utf8, int p_len, bool p_skip_cr) {
bool decode_failed = false; bool decode_failed = false;
{ {
const char *ptrtmp = p_utf8; const char *ptrtmp = p_utf8;
const char *ptrtmp_limit = &p_utf8[p_len]; const char *ptrtmp_limit = p_len >= 0 ? &p_utf8[p_len] : nullptr;
int skip = 0; int skip = 0;
uint8_t c_start = 0; uint8_t c_start = 0;
while (ptrtmp != ptrtmp_limit && *ptrtmp) { while (ptrtmp != ptrtmp_limit && *ptrtmp) {
@ -2148,7 +2148,7 @@ Error String::parse_utf16(const char16_t *p_utf16, int p_len) {
bool decode_error = false; bool decode_error = false;
{ {
const char16_t *ptrtmp = p_utf16; const char16_t *ptrtmp = p_utf16;
const char16_t *ptrtmp_limit = &p_utf16[p_len]; const char16_t *ptrtmp_limit = p_len >= 0 ? &p_utf16[p_len] : nullptr;
uint32_t c_prev = 0; uint32_t c_prev = 0;
bool skip = false; bool skip = false;
while (ptrtmp != ptrtmp_limit && *ptrtmp) { while (ptrtmp != ptrtmp_limit && *ptrtmp) {