svn commit: r350099 - head/stand/common
Simon J. Gerraty
sjg at FreeBSD.org
Wed Jul 17 23:33:15 UTC 2019
Author: sjg
Date: Wed Jul 17 23:33:14 2019
New Revision: 350099
URL: https://svnweb.freebsd.org/changeset/base/350099
Log:
loader: ignore some variable settings if input unverified
libsecureboot can tell us if the most recent file opened was
verfied or not.
If it's state is VE_UNVERIFIED_OK, skip if variable
matches one of the restricted prefixes.
Reviewed by: stevek
MFC after: 1 week
Sponsored by: Juniper Networks
Differential Revision: https://reviews.freebsd.org//D20909
Modified:
head/stand/common/commands.c
Modified: head/stand/common/commands.c
==============================================================================
--- head/stand/common/commands.c Wed Jul 17 23:09:40 2019 (r350098)
+++ head/stand/common/commands.c Wed Jul 17 23:33:14 2019 (r350099)
@@ -304,6 +304,36 @@ command_set(int argc, char *argv[])
command_errmsg = "wrong number of arguments";
return (CMD_ERROR);
} else {
+#ifdef LOADER_VERIEXEC
+ /*
+ * Impose restrictions if input is not verified
+ */
+ const char *restricted[] = {
+ "boot",
+ "init",
+ "loader.ve.",
+ "rootfs",
+ "secur",
+ "vfs.",
+ NULL,
+ };
+ const char **cp;
+ int ves;
+
+ ves = ve_status_get(-1);
+ if (ves == VE_UNVERIFIED_OK) {
+#ifdef LOADER_VERIEXEC_TESTING
+ printf("Checking: %s\n", argv[1]);
+#endif
+ for (cp = restricted; *cp; cp++) {
+ if (strncmp(argv[1], *cp, strlen(*cp)) == 0) {
+ printf("Ignoring restricted variable: %s\n",
+ argv[1]);
+ return (CMD_OK);
+ }
+ }
+ }
+#endif
if ((err = putenv(argv[1])) != 0) {
command_errmsg = strerror(err);
return (CMD_ERROR);
More information about the svn-src-all
mailing list