Prevent crashes from illegal locale coding systems

* src/xfns.c (xic_preedit_draw_callback):
* src/xterm.c (handle_one_xevent): Don't pass invalid coding
systems to `setup_coding_system'.
This commit is contained in:
Po Lu 2022-02-13 18:19:51 +08:00
parent 242a2765d3
commit 6ed1994d27
2 changed files with 18 additions and 0 deletions

View file

@ -3198,6 +3198,14 @@ xic_preedit_draw_callback (XIC xic, XPointer client_data,
if (!output->preedit_active)
return;
/* If we don't bail out here then GTK can crash
from the resulting signal in `setup_coding_system'. */
if (NILP (Fcoding_system_p (Vlocale_coding_system)))
{
text = NULL;
goto im_abort;
}
if (call_data->text)
text = x_xim_text_to_utf8_unix (call_data->text, &text_length);
else

View file

@ -10024,6 +10024,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
if (nchars < nbytes)
{
/* If we don't bail out here then GTK can crash
from the resulting signal in `setup_coding_system'. */
if (NILP (Fcoding_system_p (coding_system)))
goto done_keysym;
/* Decode the input data. */
/* The input should be decoded with `coding_system'
@ -11763,6 +11768,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
if (nchars < nbytes)
{
/* If we don't bail out here then GTK can crash
from the resulting signal in `setup_coding_system'. */
if (NILP (Fcoding_system_p (Vlocale_coding_system)))
goto xi_done_keysym;
/* Decode the input data. */
setup_coding_system (Vlocale_coding_system, &coding);