[pango/pango-1-44] Fix the length checking



commit 83ca22555b7a3c75ceaf93e7413864458bfd234b
Author: Weng Xuetian <xweng google com>
Date:   Thu Jan 14 20:37:05 2021 -0800

    Fix the length checking
    
    Closes #526
    
    (cherry-picked from commit 0a816b49)

 pango/pango-context.c |  2 +-
 tests/testmisc.c      | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)
---
diff --git a/pango/pango-context.c b/pango/pango-context.c
index d1c5a734..7139de0b 100644
--- a/pango/pango-context.c
+++ b/pango/pango-context.c
@@ -1571,7 +1571,7 @@ pango_itemize_with_base_dir (PangoContext      *context,
   g_return_val_if_fail (length >= 0, NULL);
   g_return_val_if_fail (length == 0 || text != NULL, NULL);
 
-  if (length == 0 || g_utf8_strlen (text, length) == 0)
+  if (length == 0 || g_utf8_strlen (text + start_index, length) == 0)
     return NULL;
 
   itemize_state_init (&state, context, text, base_dir, start_index, length,
diff --git a/tests/testmisc.c b/tests/testmisc.c
index 8cfd8e12..5ba7c81b 100644
--- a/tests/testmisc.c
+++ b/tests/testmisc.c
@@ -51,6 +51,19 @@ test_itemize_empty_crash (void)
   g_object_unref (context);
 }
 
+static void
+test_itemize_utf8 (void)
+{
+  PangoContext *context;
+  GList *result = NULL;
+
+  context = pango_font_map_create_context (pango_cairo_font_map_get_default ());
+  result = pango_itemize_with_base_dir (context, PANGO_DIRECTION_LTR, "\xc3\xa1\na", 3, 1, NULL, NULL);
+  g_assert (result != NULL);
+
+  g_object_unref (context);
+}
+
 /* Test that pango_layout_set_text (layout, "short", 200)
  * does not lead to a crash. (pidgin does this)
  */
@@ -91,6 +104,7 @@ main (int argc, char *argv[])
 
   g_test_add_func ("/layout/shape-tab-crash", test_shape_tab_crash);
   g_test_add_func ("/layout/itemize-empty-crash", test_itemize_empty_crash);
+  g_test_add_func ("/layout/itemize-utf8", test_itemize_utf8);
   g_test_add_func ("/layout/short-string-crash", test_short_string_crash);
   g_test_add_func ("/language/emoji-crash", test_language_emoji_crash);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]