From 31c87ba90813a38222002d717d7f03dcf30ebced Mon Sep 17 00:00:00 2001 From: rubidium42 Date: Tue, 27 Apr 2021 18:25:53 +0200 Subject: Fix: truncating strings in settings could leave invalid Utf8 characters --- src/settings.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/settings.cpp b/src/settings.cpp index 3095c6079..9b97107a3 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -506,7 +506,12 @@ static void Write_ValidateString(void *ptr, const SaveLoad *sld, const char *p) switch (GetVarMemType(sld->conv)) { case SLE_VAR_STRB: case SLE_VAR_STRBQ: - if (p != nullptr) strecpy((char*)ptr, (const char*)p, (char*)ptr + sld->length - 1); + if (p != nullptr) { + char *begin = (char*)ptr; + char *end = begin + sld->length - 1; + strecpy(begin, p, end); + str_validate(begin, end, SVS_NONE); + } break; case SLE_VAR_STR: -- cgit v1.2.3-70-g09d2