summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-07-10 20:26:23 -0400
committerMatthias Clasen <mclasen@redhat.com>2019-07-10 20:28:08 -0400
commit490f8979a260c16b1df055eab386345da18a2d54 (patch)
tree58ace141219bf222f9dcc6cfd8dfc3ef834d6e34
parentfc5dc3e3dcb3c464f9b4f04b2d0b97ccc7796d19 (diff)
downloadpango-490f8979a260c16b1df055eab386345da18a2d54.tar.gz
bidi: Be safer against bad input
Don't run off the end of an array that we allocated to certain length. Closes: https://gitlab.gnome.org/GNOME/pango/issues/342
-rw-r--r--pango/pango-bidi-type.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/pango/pango-bidi-type.c b/pango/pango-bidi-type.c
index 3e46b66c..5c02dbbb 100644
--- a/pango/pango-bidi-type.c
+++ b/pango/pango-bidi-type.c
@@ -181,8 +181,11 @@ pango_log2vis_get_embedding_levels (const gchar *text,
for (i = 0, p = text; p < text + length; p = g_utf8_next_char(p), i++)
{
gunichar ch = g_utf8_get_char (p);
- FriBidiCharType char_type;
- char_type = fribidi_get_bidi_type (ch);
+ FriBidiCharType char_type = fribidi_get_bidi_type (ch);
+
+ if (i == n_chars)
+ break;
+
bidi_types[i] = char_type;
ored_types |= char_type;
if (FRIBIDI_IS_STRONG (char_type))