diff options
Diffstat (limited to 'gtk/gtkimcontextsimple.c')
-rw-r--r-- | gtk/gtkimcontextsimple.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gtk/gtkimcontextsimple.c b/gtk/gtkimcontextsimple.c index 36da2c96a9..d1c5f543d0 100644 --- a/gtk/gtkimcontextsimple.c +++ b/gtk/gtkimcontextsimple.c @@ -827,7 +827,9 @@ gtk_im_context_simple_commit_char (GtkIMContext *context, gint len; GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context); - + + g_return_if_fail (g_unichar_validate (ch)); + len = g_unichar_to_utf8 (ch, buf); buf[len] = '\0'; @@ -981,12 +983,10 @@ check_hex (GtkIMContextSimple *context_simple, } else g_string_free (str, TRUE); - - if (n > 0xFFFF) - return FALSE; /* too many digits */ - if (n == 0) - return FALSE; /* don't insert nul bytes */ + /* don't allow invalid Unicode or nul bytes */ + if (n == 0 || !g_unichar_validate (n)) + return FALSE; context_simple->tentative_match = n; context_simple->tentative_match_len = n_compose; |