From: Vsevolod Stakhov Date: Thu, 2 Apr 2015 13:09:59 +0000 (+0100) Subject: Fix broken unicode sequences. X-Git-Tag: 0.9.0~345 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c0c7937ec6cf30e17e8e418939a8cba3cce7714;p=thirdparty%2Frspamd.git Fix broken unicode sequences. --- diff --git a/src/libutil/util.c b/src/libutil/util.c index f64fe24019..259e242e3d 100644 --- a/src/libutil/util.c +++ b/src/libutil/util.c @@ -735,7 +735,7 @@ void rspamd_str_lc_utf8 (gchar *str, guint size) { const gchar *s = str, *p; - gchar *d = str; + gchar *d = str, tst[6]; gint remain = size; gint r; gunichar uc; @@ -749,12 +749,24 @@ rspamd_str_lc_utf8 (gchar *str, guint size) break; } - r = g_unichar_to_utf8 (uc, d); - g_assert (remain >= r); + if (remain >= 6) { + r = g_unichar_to_utf8 (uc, d); + } + else { + /* We must be cautious here to avoid broken unicode being append */ + r = g_unichar_to_utf8 (uc, tst); + if (r > remain) { + break; + } + else { + memcpy (d, tst, r); + } + } remain -= r; s = p; d += r; } + *d = '\0'; }