summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko2017-08-06 18:17:58 +0200
committerDenys Vlasenko2017-08-06 18:17:58 +0200
commit341ce0a31eb2bdc352ef61df1954983c5235c818 (patch)
tree02c8618e4ca9cd1f7b61333b5f73be3b70bde08f
parent97b738d359c0398942d0dc4301415a2fe814eace (diff)
downloadbusybox-341ce0a31eb2bdc352ef61df1954983c5235c818.zip
busybox-341ce0a31eb2bdc352ef61df1954983c5235c818.tar.gz
setlogcons: make it NOEXEC, better --help text
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--NOFORK_NOEXEC.lst2
-rw-r--r--console-tools/setlogcons.c20
2 files changed, 17 insertions, 5 deletions
diff --git a/NOFORK_NOEXEC.lst b/NOFORK_NOEXEC.lst
index 30690af..8145e25 100644
--- a/NOFORK_NOEXEC.lst
+++ b/NOFORK_NOEXEC.lst
@@ -308,7 +308,7 @@ setarch - noexec. spawner
setconsole
setfont
setkeycodes
-setlogcons
+setlogcons - noexec
setpriv - spawner, changes state, let's play safe and not be noexec
setserial - noexec
setsid - spawner, uses fork_or_rexec() [not audited to work in noexec], let's play safe and not be noexec
diff --git a/console-tools/setlogcons.c b/console-tools/setlogcons.c
index 1b5814e..6778a4d 100644
--- a/console-tools/setlogcons.c
+++ b/console-tools/setlogcons.c
@@ -15,14 +15,26 @@
//config: help
//config: This program redirects the output console of kernel messages.
-//applet:IF_SETLOGCONS(APPLET(setlogcons, BB_DIR_USR_SBIN, BB_SUID_DROP))
+//applet:IF_SETLOGCONS(APPLET_NOEXEC(setlogcons, setlogcons, BB_DIR_USR_SBIN, BB_SUID_DROP, setlogcons))
//kbuild:lib-$(CONFIG_SETLOGCONS) += setlogcons.o
//usage:#define setlogcons_trivial_usage
//usage: "[N]"
//usage:#define setlogcons_full_usage "\n\n"
-//usage: "Redirect the kernel output to console N. Default:0 (current console)"
+//usage: "Pin kernel output to VT console N. Default:0 (do not pin)"
+
+// Comment from kernel source:
+/* ...
+ * By default, the kernel messages are always printed on the current virtual
+ * console. However, the user may modify that default with the
+ * TIOCL_SETKMSGREDIRECT ioctl call.
+ *
+ * This function sets the kernel message console to be @new. It returns the old
+ * virtual console number. The virtual terminal number 0 (both as parameter and
+ * return value) means no redirection (i.e. always printed on the currently
+ * active console).
+ */
#include "libbb.h"
@@ -33,8 +45,8 @@ int setlogcons_main(int argc UNUSED_PARAM, char **argv)
char fn;
char subarg;
} arg = {
- 11, /* redirect kernel messages */
- 0 /* to specified console (current as default) */
+ 11, /* redirect kernel messages (TIOCL_SETKMSGREDIRECT) */
+ 0
};
if (argv[1])