[PATCH v7 3/6] launcher-logind: only get a VT on seat0, as only seat0 supports VTs

Emil Velikov emil.l.velikov at gmail.com
Wed Jun 27 10:44:19 UTC 2018


On 27 June 2018 at 00:39, nerdopolis <bluescreen_avenger at verizon.net> wrote:
> As only seat0 supports TTYs, this changes the logind launcher where
> it detects a TTY, only if the seat is seat0. This has only been
> tested for logind
> ---
>  libweston/launcher-logind.c | 22 ++++++++++++----------
>  libweston/launcher-util.c   |  4 ++++
>  2 files changed, 16 insertions(+), 10 deletions(-)
>
> diff --git a/libweston/launcher-logind.c b/libweston/launcher-logind.c
> index d0559c8f..36a4e642 100644
> --- a/libweston/launcher-logind.c
> +++ b/libweston/launcher-logind.c
> @@ -762,18 +762,20 @@ launcher_logind_connect(struct weston_launcher **out, struct weston_compositor *
>                 free(t);
>                 goto err_session;
>         }
> -       free(t);
>
> -       r = weston_sd_session_get_vt(wl->sid, &wl->vtnr);
> -       if (r < 0) {
> -               weston_log("logind: session not running on a VT\n");
> -               goto err_session;
> -       } else if (tty > 0 && wl->vtnr != (unsigned int )tty) {
> -               weston_log("logind: requested VT --tty=%d differs from real session VT %u\n",
> -                          tty, wl->vtnr);
> -               r = -EINVAL;
> -               goto err_session;
> +       if (!strcmp(t, "seat0")) {
> +               r = weston_sd_session_get_vt(wl->sid, &wl->vtnr);
> +               if (r < 0) {
> +                       weston_log("logind: session not running on a VT\n");
> +                       goto err_session;
> +               } else if (tty > 0 && wl->vtnr != (unsigned int )tty) {
> +                       weston_log("logind: requested VT --tty=%d differs from real session VT %u\n",
> +                                  tty, wl->vtnr);
> +                       r = -EINVAL;
> +                       goto err_session;
> +               }
>         }
> +       free(t);
>
t is leaked in the error paths. The briefest way to handle is
  r = strcmp(...);
  free(t);
  if (r == 0) {
    existing_get_vt_code
  }

-Emil


More information about the wayland-devel mailing list