[PATCH] text: Respawn input method process if it exits
Michael Hasselmann
michaelh at openismus.com
Tue May 14 08:47:44 PDT 2013
On Tue, 2013-05-14 at 12:16 -0300, Eduardo Lima (Etrunko) wrote:
> +static void launch_input_method(struct text_backend *text_backend);
> +
> static void
> handle_input_method_sigchld(struct weston_process *process, int status)
> {
> + uint32_t time;
> struct text_backend *text_backend =
> container_of(process, struct text_backend, input_method.process);
>
> text_backend->input_method.process.pid = 0;
> text_backend->input_method.client = NULL;
> +
> + /* if input_method dies more than 5 times in 10 seconds, give up */
> + time = weston_compositor_get_time();
> + if (time - text_backend->input_method.deathstamp > 10000) {
> + text_backend->input_method.deathstamp = time;
> + text_backend->input_method.deathcount = 0;
> + }
> +
> + text_backend->input_method.deathcount++;
> + if (text_backend->input_method.deathcount > 5) {
> + weston_log("weston-desktop-shell died, giving up.\n");
Wrong log message, should be "input_method died, giving up.\n"
> + return;
> + }
> +
> + weston_log("input_method died, respawning...\n");
> + launch_input_method(text_backend);
I am not smart enough to figure out whether this could be abused to
launch a (possibly untrusted) 3rd party input method at runtime, say by
manipulating some cached config and then triggering a crash in the input
method.
ciao Michael
More information about the wayland-devel
mailing list