Add check for large compose files
authorLuca Bacci <luca.bacci982@gmail.com>
Wed, 19 Jul 2023 14:19:28 +0000 (16:19 +0200)
committerLuca Bacci <luca.bacci982@gmail.com>
Wed, 19 Jul 2023 15:47:22 +0000 (17:47 +0200)
Fixes #4990

gtk/gtkcomposetable.c

index f999ddbc265580db13d951c03a65a3263761d4f0..b8842d9731a451b052acfa0dfa8af50cb546b7f8 100644 (file)
@@ -980,6 +980,7 @@ parser_get_compose_table (GtkComposeParser *parser)
           current_first = (guint16)sequence[0];
 
           data[first_pos] = (guint16)sequence[0];
+
           for (i = 1; i < index_rowstride; i++)
             data[first_pos + i] = rest_pos;
         }
@@ -998,6 +999,14 @@ parser_get_compose_table (GtkComposeParser *parser)
 
       rest_pos += len;
 
+      if (rest_pos >= 0x8000)
+        {
+          g_warning ("GTK can't handle compose tables this large (%s)", parser->compose_file ? parser->compose_file : "");
+          g_free (data);
+          g_string_free (char_data, TRUE);
+          return NULL;
+        }
+
       for (i = len + 1; i < index_rowstride; i++)
         data[first_pos + i] = rest_pos;