Comment 7 for bug 1235915

Revision history for this message
Charles Kerr (charlesk) wrote :

  #7

Looks like the crash is happening in this part of liblightdm-gobject:

> xkl_engine = xkl_engine_get_instance (display);
> xkl_config = xkl_config_rec_new ();
> if (!xkl_config_rec_get_from_server (xkl_config, xkl_engine))
> g_warning ("Failed to get Xkl configuration from server");

xkl_engine_get_instance() is returning NULL, and xkl_config_rec_get_from_server() is dereferencing that NULL via its internal xkl_engine_priv() macro:

> #define xkl_engine_priv(engine,member) (engine)->priv->member

> xkl_config_rec_get_full_from_server(char **rules_file_out, XklConfigRec * data, XklEngine * engine)
> {
> gboolean rv = xkl_config_rec_get_from_root_window_property(data,
> xkl_engine_priv
> (engine,
> base_config_atom),

xkl should probably sanitize its inputs, but lightdm should also be careful to not pass a NULL engine back to xkl.