From ad056ca396de47f16456acf4c5902c74df7568c0 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 21 Jul 2019 10:16:16 +0200 Subject: [PATCH] Revert "Add option to lock TTY switching" This reverts commit dcfcba3ed48587f607dd37f08dcf55b731dc2303. As-is, this requires i3lock to be run with too many permissions, for a feature which many users will never need. In issue #231, we concluded that interested users are better off using a dedicated virtual console locker such as vlock(1). related to #231 --- Makefile.am | 4 ---- i3lock.1 | 5 ----- i3lock.c | 49 ++----------------------------------------------- 3 files changed, 2 insertions(+), 56 deletions(-) diff --git a/Makefile.am b/Makefile.am index b5cd883..5847975 100644 --- a/Makefile.am +++ b/Makefile.am @@ -56,7 +56,3 @@ EXTRA_DIST = \ LICENSE \ README.md \ I3LOCK_VERSION - -# SUID the executable so it has permissions to lock TTY switching -install-exec-hook: - chmod +s $(DESTDIR)$(bindir)/i3lock$(EXEEXT) diff --git a/i3lock.1 b/i3lock.1 index 21d439f..70fffae 100644 --- a/i3lock.1 +++ b/i3lock.1 @@ -28,7 +28,6 @@ i3lock \- improved screen locker .RB [\|\-u\|] .RB [\|\-e\|] .RB [\|\-f\|] -.RB [\|\-l\|] .SH DESCRIPTION .B i3lock @@ -116,10 +115,6 @@ your computer with the enter key. .B \-f, \-\-show-failed-attempts Show the number of failed attempts, if any. -.TP -.B \-l, \-\-lock-console -Lock the console to disable TTY switching (Linux only). - .TP .B \-\-debug Enables debug logging. diff --git a/i3lock.c b/i3lock.c index f620837..5da052b 100644 --- a/i3lock.c +++ b/i3lock.c @@ -40,11 +40,6 @@ #endif #include #include -#if defined(__linux__) -#include -#include -#include -#endif #include "i3lock.h" #include "xcb.h" @@ -1018,11 +1013,6 @@ int main(int argc, char *argv[]) { int ret; struct pam_conv conv = {conv_callback, NULL}; #endif -#if defined(__linux__) - bool lock_tty_switching = false; - int term = -1; -#endif - int curs_choice = CURS_NONE; int o; int longoptind = 0; @@ -1042,7 +1032,6 @@ int main(int argc, char *argv[]) { {"ignore-empty-password", no_argument, NULL, 'e'}, {"inactivity-timeout", required_argument, NULL, 'I'}, {"show-failed-attempts", no_argument, NULL, 'f'}, - {"lock-console", no_argument, NULL, 'l'}, {NULL, no_argument, NULL, 0}}; if ((pw = getpwuid(getuid())) == NULL) @@ -1050,7 +1039,7 @@ int main(int argc, char *argv[]) { if ((username = pw->pw_name) == NULL) errx(EXIT_FAILURE, "pw->pw_name is NULL."); - char *optstring = "hvnbdc:p:ui:teI:fl"; + char *optstring = "hvnbdc:p:ui:teI:f"; while ((o = getopt_long(argc, argv, optstring, longopts, &longoptind)) != -1) { switch (o) { case 'v': @@ -1110,16 +1099,9 @@ int main(int argc, char *argv[]) { case 'f': show_failed_attempts = true; break; - case 'l': -#if defined(__linux__) - lock_tty_switching = true; -#else - errx(EXIT_FAILURE, "TTY switch locking is only supported on Linux."); -#endif - break; default: errx(EXIT_FAILURE, "Syntax: i3lock [-v] [-n] [-b] [-d] [-c color] [-u] [-p win|default]" - " [-i image.png] [-t] [-e] [-I timeout] [-f] [-l]"); + " [-i image.png] [-t] [-e] [-I timeout] [-f]"); } } @@ -1291,21 +1273,6 @@ int main(int argc, char *argv[]) { if (main_loop == NULL) errx(EXIT_FAILURE, "Could not initialize libev. Bad LIBEV_FLAGS?"); -#if defined(__linux__) - - /* Lock tty switching */ - if (lock_tty_switching) { - if ((term = open("/dev/console", O_RDWR)) == -1) { - perror("error locking TTY switching: opening console failed"); - } - - if (term != -1 && (ioctl(term, VT_LOCKSWITCH)) == -1) { - perror("error locking TTY switching: locking console failed"); - } - } - -#endif - /* Explicitly call the screen redraw in case "locking…" message was displayed */ auth_state = STATE_AUTH_IDLE; redraw_screen(); @@ -1333,18 +1300,6 @@ int main(int argc, char *argv[]) { return 0; } -#if defined(__linux__) - /* Restore tty switching */ - if (lock_tty_switching) { - if (term != -1 && (ioctl(term, VT_UNLOCKSWITCH)) == -1) { - perror("error unlocking TTY switching: unlocking console failed"); - } - - close(term); - } - -#endif - DEBUG("restoring focus to X11 window 0x%08x\n", stolen_focus); xcb_ungrab_pointer(conn, XCB_CURRENT_TIME); xcb_ungrab_keyboard(conn, XCB_CURRENT_TIME);