git: e12a0ffe2b01 - main - makesyscalls: rip out arbitrary command execution

Kyle Evans kevans at FreeBSD.org
Sat Sep 25 01:59:02 UTC 2021


The branch main has been updated by kevans:

URL: https://cgit.FreeBSD.org/src/commit/?id=e12a0ffe2b01a653a213423435bfe0a696ca737e

commit e12a0ffe2b01a653a213423435bfe0a696ca737e
Author:     Kyle Evans <kevans at FreeBSD.org>
AuthorDate: 2021-09-24 01:04:36 +0000
Commit:     Kyle Evans <kevans at FreeBSD.org>
CommitDate: 2021-09-25 01:53:44 +0000

    makesyscalls: rip out arbitrary command execution
    
    This was previously needed only for CloudABI, which used it to generate
    its capenabled from syscalls.master.  CloudABI was removed in
    cf0ee8738e31, so we don't need to support this anymore.  Others looking
    to do similar things should come up with a more integrated technique,
    such as a .conf flag or pattern/glob support.  brooks suggests that it
    could be done in modern makesyscalls.lua by adding a config flag to
    specify always-on/initial flags (CAPENABLED).
    
    Reviewed by:    brooks, imp
    MFC after:      never
    Differential Revision:  https://reviews.freebsd.org/D32095
---
 sys/tools/makesyscalls.lua | 35 ++---------------------------------
 1 file changed, 2 insertions(+), 33 deletions(-)

diff --git a/sys/tools/makesyscalls.lua b/sys/tools/makesyscalls.lua
index 811101305ec4..64b260eb65bf 100644
--- a/sys/tools/makesyscalls.lua
+++ b/sys/tools/makesyscalls.lua
@@ -195,19 +195,6 @@ local function trim(s, char)
 	return s:gsub("^" .. char .. "+", ""):gsub(char .. "+$", "")
 end
 
--- We have to io.popen it, making sure it's properly escaped, and grab the
--- output from the handle returned.
-local function exec(cmd)
-	cmd = cmd:gsub('"', '\\"')
-
-	local shcmd = "/bin/sh -c \"" .. cmd .. "\""
-	local fh = io.popen(shcmd)
-	local output = fh:read("a")
-
-	fh:close()
-	return output
-end
-
 -- config looks like a shell script; in fact, the previous makesyscalls.sh
 -- script actually sourced it in.  It had a pretty common format, so we should
 -- be fine to make various assumptions
@@ -240,8 +227,9 @@ local function process_config(file)
 			key = trim(key)
 			value = trim(value)
 			local delim = value:sub(1,1)
-			if delim == '`' or delim == '"' then
+			if delim == '"' then
 				local trailing_context
+
 				-- Strip off the key/value part
 				trailing_context = nextline:sub(kvp:len() + 1)
 				-- Strip off any trailing comment
@@ -253,26 +241,7 @@ local function process_config(file)
 					print(trailing_context)
 					abort(1, "Malformed line: " .. nextline)
 				end
-			end
-			if delim == '`' then
-				-- Command substition may use $1 and $2 to mean
-				-- the syscall definition file and itself
-				-- respectively.  We'll go ahead and replace
-				-- $[0-9] with respective arg in case we want to
-				-- expand this in the future easily...
-				value = trim(value, delim)
-				for capture in value:gmatch("$([0-9]+)") do
-					capture = tonumber(capture)
-					if capture > #arg then
-						abort(1, "Not enough args: " ..
-						    value)
-					end
-					value = value:gsub("$" .. capture,
-					    arg[capture])
-				end
 
-				value = exec(value)
-			elseif delim == '"' then
 				value = trim(value, delim)
 			else
 				-- Strip off potential comments


More information about the dev-commits-src-all mailing list