[PATCH procd] Disable implicit controlling TTY.

Markus Gothe markus.gothe at genexis.eu
Tue Oct 8 04:38:02 PDT 2024


Disable the use of implicit controlling
TTYs. They will be enabled on demand.

This fixes a bug where 2 or more
consecutive Ctrl-C at the login prompt
triggers a reboot of the device.

Closes: https://github.com/openwrt/openwrt/issues/11306

Signed-off-by: Markus Gothe <markus.gothe at genexis.eu>
---
  inittab.c     | 2 +-
  state.c       | 2 +-
  utils/utils.c | 2 ++
  3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/inittab.c b/inittab.c
index 73a2174..46ca796 100644
--- a/inittab.c
+++ b/inittab.c
@@ -79,7 +79,7 @@ static int dev_exist(const char *dev)
      if (dfd < 0)
          return 0;

-    fd = openat(dfd, dev, O_RDONLY);
+    fd = openat(dfd, dev, O_RDONLY|O_NOCTTY);
      close(dfd);

      if (fd < 0)
diff --git a/state.c b/state.c
index fb81248..cd64431 100644
--- a/state.c
+++ b/state.c
@@ -79,7 +79,7 @@ static void set_console(void)
          return;
      }
      while (tty!=NULL) {
-        f = open(tty, O_RDONLY);
+        f = open(tty, O_RDONLY|O_NOCTTY);
          if (f >= 0) {
              close(f);
              break;
diff --git a/utils/utils.c b/utils/utils.c
index 1939dbd..ba14269 100644
--- a/utils/utils.c
+++ b/utils/utils.c
@@ -203,6 +203,8 @@ int patch_fd(const char *device, int fd, int flags)
  {
      int dfd, nfd;

+    flags |= O_NOCTTY;
+
      if (device == NULL)
          device = "/dev/null";

-- 
2.46.2



More information about the openwrt-devel mailing list