On Fri, Jan 20, 2023 at 01:15:29PM -0700, Theo de Raadt wrote:
> Todd C. Miller <[email protected]> wrote:
> > I wonder if it makes sense to have a version of sysctl.conf that
> > only gets used for the next reboot and then is removed, kind of
> > like /etc/rc.firsttime. Maybe call it /etc/sysctl.once.
>
> Well you are shown the change at boot, and it is visible in dmesg -s,
> which should be good enough.
Otherwise, something like this might be useful for test machines:
Index: wsemul_vt100.c
===================================================================
RCS file: /cvs/src/sys/dev/wscons/wsemul_vt100.c,v
retrieving revision 1.42
diff -u -p -r1.42 wsemul_vt100.c
--- wsemul_vt100.c 12 Jan 2023 20:39:37 -0000 1.42
+++ wsemul_vt100.c 20 Jan 2023 21:00:08 -0000
@@ -170,6 +170,12 @@ wsemul_vt100_cnattach(const struct wsscr
#ifndef WS_KERNEL_BG
#define WS_KERNEL_BG WSCOL_BLUE
#endif
+#ifndef WS_INSEC_BG
+#define WS_INSEC_BG WSCOL_RED
+#endif
+#ifndef WS_INSEC_FG
+#define WS_INSEC_FG WSCOL_WHITE
+#endif
#ifndef WS_KERNEL_COLATTR
#define WS_KERNEL_COLATTR 0
#endif
@@ -186,6 +192,16 @@ wsemul_vt100_cnattach(const struct wsscr
if (res)
edp->kernattr = defattr;
+ if (type->capabilities & WSSCREEN_WSCOLORS)
+ res = (*edp->emulops->pack_attr)(cookie,
+ WS_INSEC_FG, WS_INSEC_BG,
+ WS_KERNEL_COLATTR | WSATTR_WSCOLORS, &edp->insecattr);
+ else
+ res = (*edp->emulops->pack_attr)(cookie, 0, 0,
+ WS_KERNEL_MONOATTR, &edp->insecattr);
+ if (res)
+ edp->insecattr = defattr;
+
edp->tabs = NULL;
#ifdef HAVE_DOUBLE_WIDTH_HEIGHT
edp->dblwid = NULL;
@@ -387,15 +403,15 @@ wsemul_vt100_output_normal(struct wsemul
return rc;
}
}
-
+#define KERN_ATTR (securelevel < 1 ? edp->insecattr : edp->kernattr)
#ifdef HAVE_DOUBLE_WIDTH_HEIGHT
WSEMULOP(rc, edp, &edp->abortstate, putchar,
(edp->emulcookie, edp->crow, edp->ccol << edp->dw, dc,
- kernel ? edp->kernattr : edp->curattr));
+ kernel ? KERN_ATTR : edp->curattr));
#else
WSEMULOP(rc, edp, &edp->abortstate, putchar,
(edp->emulcookie, edp->crow, edp->ccol, dc,
- kernel ? edp->kernattr : edp->curattr));
+ kernel ? KERN_ATTR : edp->curattr));
#endif
if (rc != 0) {
/* undo potential sschartab update */
Index: wsemul_vt100var.h
===================================================================
RCS file: /cvs/src/sys/dev/wscons/wsemul_vt100var.h,v
retrieving revision 1.12
diff -u -p -r1.12 wsemul_vt100var.h
--- wsemul_vt100var.h 12 Jan 2023 20:39:37 -0000 1.12
+++ wsemul_vt100var.h 20 Jan 2023 21:00:08 -0000
@@ -38,6 +38,7 @@ struct wsemul_vt100_emuldata {
uint32_t defattr; /* default attribute */
uint32_t kernattr; /* attribute for kernel output */
+ uint32_t insecattr; /* ^^^ for securelevel < 1 ^^^ */
void *cbcookie;
#ifdef DIAGNOSTIC
int console;