]> Pileus Git - ~andy/gtk/commitdiff
GtkLabelAccessible: Sanity check _get_text() input values
authorBastien Nocera <hadess@hadess.net>
Wed, 6 Mar 2013 14:46:51 +0000 (15:46 +0100)
committerBastien Nocera <hadess@hadess.net>
Wed, 6 Mar 2013 14:50:30 +0000 (15:50 +0100)
gtk/a11y/gtklabelaccessible.c

index dc59d3c0574807373052ca8d1c1fc856d9ede527..c88b7d7d8e30f82ebd64e3d7530396b512080ef1 100644 (file)
@@ -307,7 +307,21 @@ gtk_label_accessible_get_text (AtkText *atk_text,
   text = gtk_label_get_text (GTK_LABEL (widget));
 
   if (text)
-    return g_utf8_substring (text, start_pos, end_pos > -1 ? end_pos : g_utf8_strlen (text, -1));
+    {
+      guint length;
+      const gchar *start, *end;
+
+      length = g_utf8_strlen (text, -1);
+      if (end_pos < 0 || end_pos > length)
+        end_pos = length;
+      if (start_pos > length)
+        start_pos = length;
+      if (end_pos <= start_pos)
+        return g_strdup ("");
+      start = g_utf8_offset_to_pointer (text, start_pos);
+      end = g_utf8_offset_to_pointer (start, end_pos - start_pos);
+      return g_strndup (start, end - start);
+    }
 
   return NULL;
 }