From d0a3ca3453920de350b2ae88f669fbb87d843a4f Mon Sep 17 00:00:00 2001 From: Zero King Date: Sat, 25 Dec 2021 13:28:43 +0000 Subject: [PATCH] utils: validate string before g_utf8_next_char() --- lib/utils/mu-utils.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/utils/mu-utils.cc b/lib/utils/mu-utils.cc index 2c2e86c6..8516388b 100644 --- a/lib/utils/mu-utils.cc +++ b/lib/utils/mu-utils.cc @@ -36,6 +36,7 @@ #include "mu-utils.hh" #include "mu-util.h" +#include "mu-str.h" using namespace Mu; @@ -131,8 +132,9 @@ std::string Mu::utf8_clean(const std::string& dirty) { GString* gstr = g_string_sized_new(dirty.length()); + auto cstr = mu_str_utf8ify(dirty.c_str()); - for (auto cur = dirty.c_str(); cur && *cur; cur = g_utf8_next_char(cur)) { + for (auto cur = cstr; cur && *cur; cur = g_utf8_next_char(cur)) { const gunichar uc = g_utf8_get_char(cur); if (g_unichar_iscntrl(uc)) g_string_append_c(gstr, ' '); @@ -140,6 +142,7 @@ Mu::utf8_clean(const std::string& dirty) g_string_append_unichar(gstr, uc); } + g_free(cstr); std::string clean(gstr->str, gstr->len); g_string_free(gstr, TRUE);