Fixed potential undefined behavior in FullItemDescInBarter

* due to obj_examine_func_hack_objdesc, item description is coped to
messageBuffer already (max 354 chars), so in most cases desc is the same
as messageBuffer, which should be UB to strncpy_s. MSVC's implementation
seems treating self-copy as no-op, but we shouldn't rely on this
behavior.
This commit is contained in:
NovaRain
2025-05-04 08:53:48 +08:00
parent 8622917e12
commit aa3ac70949
+3 -1
View File
@@ -1756,7 +1756,9 @@ static void __stdcall AppendText(const char* text, const char* desc) {
if (desc == nullptr) {
desc = fo::util::MessageSearch(&fo::var::proto_main_msg_file, 493);
}
strncpy_s(messageBuffer, desc, 161);
if (desc != messageBuffer) { // safeguard
strncpy_s(messageBuffer, desc, 161);
}
size_t len = strlen(messageBuffer);
if (len > 160) {
len = 158;