libroot: Do not include terminating NULL byte in result of [wc]strxfrm.

Fixes #18347.
This commit is contained in:
Augustin Cavalier 2023-04-08 14:48:48 -04:00
parent 3e1163d6af
commit c3c213810b

View File

@ -139,6 +139,13 @@ ICUCollateData::Strxfrm(char* out, const char* in,
requiredSize = fCollator->getSortKey(unicodeIn, (uint8_t*)out, outSize);
// Do not include terminating NULL byte in the required-size.
if (requiredSize > 0) {
if (outSize >= requiredSize)
assert(out[requiredSize - 1] == '\0');
requiredSize--;
}
return B_OK;
}
@ -207,6 +214,13 @@ ICUCollateData::Wcsxfrm(wchar_t* out, const wchar_t* in, size_t outSize,
for (size_t i = 0; i < outSize; ++i)
out[outSize - 1 - i] = buffer[outSize - 1 - i];
// Do not include terminating NULL character in the required-size.
if (requiredSize > 0) {
if (outSize >= requiredSize)
assert(out[requiredSize - 1] == 0);
requiredSize--;
}
return B_OK;
}