seccomp-tools 1.1.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +112 -30
- data/bin/seccomp-tools +1 -0
- data/ext/ptrace/extconf.rb +2 -0
- data/ext/ptrace/ptrace.c +107 -5
- data/lib/seccomp-tools.rb +5 -0
- data/lib/seccomp-tools/asm/asm.rb +5 -2
- data/lib/seccomp-tools/asm/compiler.rb +96 -18
- data/lib/seccomp-tools/asm/tokenizer.rb +25 -8
- data/lib/seccomp-tools/bpf.rb +7 -4
- data/lib/seccomp-tools/cli/asm.rb +16 -6
- data/lib/seccomp-tools/cli/base.rb +10 -4
- data/lib/seccomp-tools/cli/cli.rb +9 -6
- data/lib/seccomp-tools/cli/disasm.rb +6 -2
- data/lib/seccomp-tools/cli/dump.rb +37 -6
- data/lib/seccomp-tools/cli/emu.rb +41 -22
- data/lib/seccomp-tools/const.rb +47 -16
- data/lib/seccomp-tools/consts/sys_arg.rb +432 -0
- data/lib/seccomp-tools/consts/sys_nr/aarch64.rb +284 -0
- data/lib/seccomp-tools/consts/{amd64.rb → sys_nr/amd64.rb} +6 -1
- data/lib/seccomp-tools/consts/{i386.rb → sys_nr/i386.rb} +18 -15
- data/lib/seccomp-tools/disasm/context.rb +125 -34
- data/lib/seccomp-tools/disasm/disasm.rb +5 -2
- data/lib/seccomp-tools/dumper.rb +75 -8
- data/lib/seccomp-tools/emulator.rb +19 -8
- data/lib/seccomp-tools/instruction/alu.rb +7 -2
- data/lib/seccomp-tools/instruction/base.rb +5 -3
- data/lib/seccomp-tools/instruction/instruction.rb +2 -0
- data/lib/seccomp-tools/instruction/jmp.rb +28 -14
- data/lib/seccomp-tools/instruction/ld.rb +28 -12
- data/lib/seccomp-tools/instruction/ldx.rb +2 -0
- data/lib/seccomp-tools/instruction/misc.rb +2 -0
- data/lib/seccomp-tools/instruction/ret.rb +14 -2
- data/lib/seccomp-tools/instruction/st.rb +4 -2
- data/lib/seccomp-tools/instruction/stx.rb +2 -0
- data/lib/seccomp-tools/logger.rb +40 -0
- data/lib/seccomp-tools/syscall.rb +24 -13
- data/lib/seccomp-tools/templates/asm.amd64.asm +26 -0
- data/lib/seccomp-tools/templates/asm.c +17 -0
- data/lib/seccomp-tools/templates/asm.i386.asm +33 -0
- data/lib/seccomp-tools/util.rb +24 -3
- data/lib/seccomp-tools/version.rb +3 -1
- metadata +51 -44
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'seccomp-tools/cli/asm'
|
2
4
|
require 'seccomp-tools/cli/disasm'
|
3
5
|
require 'seccomp-tools/cli/dump'
|
@@ -9,9 +11,9 @@ module SeccompTools
|
|
9
11
|
module CLI
|
10
12
|
# Handled commands
|
11
13
|
COMMANDS = {
|
12
|
-
'dump' => SeccompTools::CLI::Dump,
|
13
|
-
'disasm' => SeccompTools::CLI::Disasm,
|
14
14
|
'asm' => SeccompTools::CLI::Asm,
|
15
|
+
'disasm' => SeccompTools::CLI::Disasm,
|
16
|
+
'dump' => SeccompTools::CLI::Dump,
|
15
17
|
'emu' => SeccompTools::CLI::Emu
|
16
18
|
}.freeze
|
17
19
|
|
@@ -23,19 +25,19 @@ List of commands:
|
|
23
25
|
|
24
26
|
%COMMANDS
|
25
27
|
|
26
|
-
See 'seccomp-tools
|
28
|
+
See 'seccomp-tools <command> --help' to read about a specific subcommand.
|
27
29
|
EOS
|
28
30
|
|
29
31
|
module_function
|
30
32
|
|
31
|
-
# Main
|
33
|
+
# Main working method of CLI.
|
32
34
|
# @param [Array<String>] argv
|
33
35
|
# Command line arguments.
|
34
36
|
# @return [void]
|
35
37
|
# @example
|
36
|
-
# work(
|
38
|
+
# work(%w[--help])
|
37
39
|
# #=> # usage message
|
38
|
-
# work(
|
40
|
+
# work(%w[--version])
|
39
41
|
# #=> # version message
|
40
42
|
def work(argv)
|
41
43
|
# all -h equivalent to --help
|
@@ -51,6 +53,7 @@ EOS
|
|
51
53
|
cmd = argv.shift
|
52
54
|
argv = %w[--help] if preoption.include?('--help')
|
53
55
|
return show(invalid(cmd)) if COMMANDS[cmd].nil?
|
56
|
+
|
54
57
|
COMMANDS[cmd].new(argv).handle
|
55
58
|
end
|
56
59
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'seccomp-tools/cli/base'
|
2
4
|
require 'seccomp-tools/disasm/disasm'
|
3
5
|
|
@@ -6,9 +8,9 @@ module SeccompTools
|
|
6
8
|
# Handle 'disasm' command.
|
7
9
|
class Disasm < Base
|
8
10
|
# Summary of this command.
|
9
|
-
SUMMARY = 'Disassemble seccomp bpf.'
|
11
|
+
SUMMARY = 'Disassemble seccomp bpf.'
|
10
12
|
# Usage of this command.
|
11
|
-
USAGE =
|
13
|
+
USAGE = "disasm - #{SUMMARY}\n\nUsage: seccomp-tools disasm BPF_FILE [options]"
|
12
14
|
|
13
15
|
# Define option parser.
|
14
16
|
# @return [OptionParser]
|
@@ -27,8 +29,10 @@ module SeccompTools
|
|
27
29
|
# @return [void]
|
28
30
|
def handle
|
29
31
|
return unless super
|
32
|
+
|
30
33
|
option[:ifile] = argv.shift
|
31
34
|
return CLI.show(parser.help) if option[:ifile].nil?
|
35
|
+
|
32
36
|
output { SeccompTools::Disasm.disasm(input, arch: option[:arch]) }
|
33
37
|
end
|
34
38
|
end
|
@@ -1,20 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'shellwords'
|
4
|
+
|
1
5
|
require 'seccomp-tools/cli/base'
|
2
6
|
require 'seccomp-tools/disasm/disasm'
|
3
7
|
require 'seccomp-tools/dumper'
|
8
|
+
require 'seccomp-tools/logger'
|
4
9
|
|
5
10
|
module SeccompTools
|
6
11
|
module CLI
|
7
12
|
# Handle 'dump' command.
|
8
13
|
class Dump < Base
|
9
14
|
# Summary of this command.
|
10
|
-
SUMMARY = 'Automatically dump seccomp bpf from execution file.'
|
15
|
+
SUMMARY = 'Automatically dump seccomp bpf from execution file(s).'
|
11
16
|
# Usage of this command.
|
12
|
-
USAGE =
|
17
|
+
USAGE = "dump - #{SUMMARY}\nNOTE : This function is only available on Linux." \
|
18
|
+
"\n\nUsage: seccomp-tools dump [exec] [options]"
|
13
19
|
|
14
20
|
def initialize(*)
|
15
21
|
super
|
16
22
|
option[:format] = :disasm
|
17
23
|
option[:limit] = 1
|
24
|
+
option[:pid] = nil
|
18
25
|
end
|
19
26
|
|
20
27
|
# Define option parser.
|
@@ -23,7 +30,8 @@ module SeccompTools
|
|
23
30
|
@parser ||= OptionParser.new do |opt|
|
24
31
|
opt.banner = usage
|
25
32
|
opt.on('-c', '--sh-exec <command>', 'Executes the given command (via sh).',
|
26
|
-
'Use this option if want to pass arguments or do pipe things to the execution file.'
|
33
|
+
'Use this option if want to pass arguments or do pipe things to the execution file.',
|
34
|
+
'e.g. use `-c "./bin > /dev/null"` to dump seccomp without being mixed with stdout.') do |command|
|
27
35
|
option[:command] = command
|
28
36
|
end
|
29
37
|
|
@@ -45,21 +53,44 @@ module SeccompTools
|
|
45
53
|
'For example, "--output out.bpf" and the output files are out.bpf, out_1.bpf, ...') do |o|
|
46
54
|
option[:ofile] = o
|
47
55
|
end
|
56
|
+
|
57
|
+
opt.on('-p', '--pid PID', 'Dump installed seccomp filters of the existing process.',
|
58
|
+
'You must have CAP_SYS_ADMIN (e.g. be root) in order to use this option.',
|
59
|
+
Integer) do |p|
|
60
|
+
option[:pid] = p
|
61
|
+
end
|
48
62
|
end
|
49
63
|
end
|
50
64
|
|
51
65
|
# Handle options.
|
52
66
|
# @return [void]
|
53
67
|
def handle
|
68
|
+
return Logger.error('Dump is only available on Linux.') unless Dumper::SUPPORTED
|
54
69
|
return unless super
|
55
|
-
|
56
|
-
|
70
|
+
|
71
|
+
block = lambda do |bpf, arch|
|
57
72
|
case option[:format]
|
58
|
-
when :inspect then output {
|
73
|
+
when :inspect then output { "\"#{bpf.bytes.map { |b| format('\\x%02X', b) }.join}\"\n" }
|
59
74
|
when :raw then output { bpf }
|
60
75
|
when :disasm then output { SeccompTools::Disasm.disasm(bpf, arch: arch) }
|
61
76
|
end
|
62
77
|
end
|
78
|
+
if option[:pid].nil?
|
79
|
+
option[:command] = argv.shift unless argv.empty?
|
80
|
+
SeccompTools::Dumper.dump('/bin/sh', '-c', option[:command], limit: option[:limit], &block)
|
81
|
+
else
|
82
|
+
begin
|
83
|
+
SeccompTools::Dumper.dump_by_pid(option[:pid], option[:limit], &block)
|
84
|
+
rescue Errno::EPERM, Errno::EACCES => e
|
85
|
+
Logger.error(<<~EOS)
|
86
|
+
#{e}
|
87
|
+
PTRACE_SECCOMP_GET_FILTER requires CAP_SYS_ADMIN
|
88
|
+
Try:
|
89
|
+
sudo env "PATH=$PATH" #{(%w[seccomp-tools] + ARGV).shelljoin}
|
90
|
+
EOS
|
91
|
+
exit(1)
|
92
|
+
end
|
93
|
+
end
|
63
94
|
end
|
64
95
|
end
|
65
96
|
end
|
@@ -1,6 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'set'
|
2
4
|
|
3
5
|
require 'seccomp-tools/cli/base'
|
6
|
+
require 'seccomp-tools/const'
|
4
7
|
require 'seccomp-tools/disasm/disasm'
|
5
8
|
require 'seccomp-tools/emulator'
|
6
9
|
require 'seccomp-tools/util'
|
@@ -10,12 +13,9 @@ module SeccompTools
|
|
10
13
|
# Handle 'emu' command.
|
11
14
|
class Emu < Base
|
12
15
|
# Summary of this command.
|
13
|
-
SUMMARY = 'Emulate seccomp rules.'
|
16
|
+
SUMMARY = 'Emulate seccomp rules.'
|
14
17
|
# Usage of this command.
|
15
|
-
USAGE =
|
16
|
-
SUMMARY +
|
17
|
-
"\n\n" \
|
18
|
-
'Usage: seccomp-tools emu [options] BPF_FILE [sys_nr [arg0 [arg1 ... arg5]]]').freeze
|
18
|
+
USAGE = "emu - #{SUMMARY}\n\nUsage: seccomp-tools emu [options] BPF_FILE [sys_nr [arg0 [arg1 ... arg5]]]"
|
19
19
|
|
20
20
|
def initialize(*)
|
21
21
|
super
|
@@ -40,13 +40,14 @@ module SeccompTools
|
|
40
40
|
# @return [void]
|
41
41
|
def handle
|
42
42
|
return unless super
|
43
|
+
|
43
44
|
option[:ifile] = argv.shift
|
44
45
|
return CLI.show(parser.help) if option[:ifile].nil?
|
46
|
+
|
45
47
|
raw = input
|
46
48
|
insts = SeccompTools::Disasm.to_bpf(raw, option[:arch]).map(&:inst)
|
47
|
-
disasm = SeccompTools::Disasm.disasm(raw, arch: option[:arch])
|
48
49
|
sys, *args = argv
|
49
|
-
sys =
|
50
|
+
sys = evaluate_sys_nr(sys) if sys
|
50
51
|
args.map! { |v| Integer(v) }
|
51
52
|
trace = Set.new
|
52
53
|
res = SeccompTools::Emulator.new(insts, sys_nr: sys, args: args, arch: option[:arch]).run do |ctx|
|
@@ -54,26 +55,44 @@ module SeccompTools
|
|
54
55
|
end
|
55
56
|
|
56
57
|
if option[:verbose] >= 1
|
57
|
-
disasm = disasm.lines
|
58
|
-
|
59
|
-
output { disasm.shift }
|
60
|
-
disasm.each_with_index do |line, idx|
|
61
|
-
output do
|
62
|
-
next line if trace.member?(idx)
|
63
|
-
Util.colorize(line, t: :gray)
|
64
|
-
end
|
65
|
-
# Too much remain, omit them.
|
66
|
-
rem = disasm.size - idx - 1
|
67
|
-
break output { Util.colorize("... (omitting #{rem} lines)\n", t: :gray) } if rem > 3 && idx > res[:pc] + 4
|
68
|
-
end
|
69
|
-
output { "\n" }
|
58
|
+
disasm = SeccompTools::Disasm.disasm(raw, arch: option[:arch]).lines
|
59
|
+
output_emulate_path(disasm, trace, res)
|
70
60
|
end
|
71
61
|
output do
|
72
|
-
ret_type = Const::BPF::ACTION.invert[res[:ret] &
|
73
|
-
errno = ret_type == :ERRNO ? "(#{res[:ret] &
|
62
|
+
ret_type = Const::BPF::ACTION.invert[res[:ret] & Const::BPF::SECCOMP_RET_ACTION_FULL]
|
63
|
+
errno = ret_type == :ERRNO ? "(#{res[:ret] & Const::BPF::SECCOMP_RET_DATA})" : ''
|
74
64
|
format("return %s%s at line %04d\n", ret_type, errno, res[:pc])
|
75
65
|
end
|
76
66
|
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
# @param [String] str
|
71
|
+
# @return [Integer]
|
72
|
+
def evaluate_sys_nr(str)
|
73
|
+
consts = SeccompTools::Const::Syscall.const_get(option[:arch].to_s.upcase)
|
74
|
+
consts[str.to_sym] || Integer(str)
|
75
|
+
end
|
76
|
+
|
77
|
+
# output the path during emulation
|
78
|
+
# @param [Array<String>] disasm
|
79
|
+
# @param [Set] trace
|
80
|
+
# @param [{Symbol => Object}] result
|
81
|
+
def output_emulate_path(disasm, trace, result)
|
82
|
+
output { disasm.shift }
|
83
|
+
output { disasm.shift }
|
84
|
+
disasm.each_with_index do |line, idx|
|
85
|
+
output do
|
86
|
+
next line if trace.member?(idx)
|
87
|
+
|
88
|
+
Util.colorize(line, t: :gray)
|
89
|
+
end
|
90
|
+
# Too much remain, omit them.
|
91
|
+
rem = disasm.size - idx - 1
|
92
|
+
break output { Util.colorize("... (omitting #{rem} lines)\n", t: :gray) } if rem > 3 && idx > result[:pc] + 4
|
93
|
+
end
|
94
|
+
output { "\n" }
|
95
|
+
end
|
77
96
|
end
|
78
97
|
end
|
79
98
|
end
|
data/lib/seccomp-tools/const.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SeccompTools
|
2
4
|
# Define constant values.
|
3
5
|
module Const
|
@@ -12,24 +14,34 @@ module SeccompTools
|
|
12
14
|
# filter mode
|
13
15
|
SECCOMP_MODE_FILTER = 2
|
14
16
|
|
17
|
+
# For syscall +seccomp+
|
18
|
+
SECCOMP_SET_MODE_FILTER = 1
|
19
|
+
|
20
|
+
# Masks for the return value sections.
|
21
|
+
|
22
|
+
# mask of return action
|
23
|
+
SECCOMP_RET_ACTION_FULL = 0xffff0000
|
24
|
+
# mask of return data
|
25
|
+
SECCOMP_RET_DATA = 0x0000ffff
|
26
|
+
|
15
27
|
# bpf command classes
|
16
28
|
COMMAND = {
|
17
|
-
ld:
|
18
|
-
ldx:
|
19
|
-
st:
|
20
|
-
stx:
|
21
|
-
alu:
|
22
|
-
jmp:
|
23
|
-
ret:
|
29
|
+
ld: 0x0,
|
30
|
+
ldx: 0x1,
|
31
|
+
st: 0x2,
|
32
|
+
stx: 0x3,
|
33
|
+
alu: 0x4,
|
34
|
+
jmp: 0x5,
|
35
|
+
ret: 0x6,
|
24
36
|
misc: 0x7
|
25
37
|
}.freeze
|
26
38
|
|
27
39
|
# types in jmp command
|
28
40
|
JMP = {
|
29
|
-
ja:
|
30
|
-
jeq:
|
31
|
-
jgt:
|
32
|
-
jge:
|
41
|
+
ja: 0x00,
|
42
|
+
jeq: 0x10,
|
43
|
+
jgt: 0x20,
|
44
|
+
jge: 0x30,
|
33
45
|
jset: 0x40
|
34
46
|
}.freeze
|
35
47
|
|
@@ -42,9 +54,13 @@ module SeccompTools
|
|
42
54
|
|
43
55
|
# seccomp action values
|
44
56
|
ACTION = {
|
45
|
-
|
46
|
-
|
57
|
+
KILL_PROCESS: 0x80000000,
|
58
|
+
KILL_THREAD: 0x00000000,
|
59
|
+
KILL: 0x00000000, # alias of KILL_THREAD
|
60
|
+
TRAP: 0x00030000,
|
47
61
|
ERRNO: 0x00050000,
|
62
|
+
USER_NOTIF: 0x7fc00000,
|
63
|
+
LOG: 0x7ffc0000,
|
48
64
|
TRACE: 0x7ff00000,
|
49
65
|
ALLOW: 0x7fff0000
|
50
66
|
}.freeze
|
@@ -65,7 +81,7 @@ module SeccompTools
|
|
65
81
|
sub: 0x10,
|
66
82
|
mul: 0x20,
|
67
83
|
div: 0x30,
|
68
|
-
or:
|
84
|
+
or: 0x40,
|
69
85
|
and: 0x50,
|
70
86
|
lsh: 0x60,
|
71
87
|
rsh: 0x70,
|
@@ -101,18 +117,33 @@ module SeccompTools
|
|
101
117
|
# @return [Object]
|
102
118
|
def load_const(cons)
|
103
119
|
arch = cons.to_s.downcase
|
104
|
-
filename = File.join(__dir__, 'consts', "#{arch}.rb")
|
120
|
+
filename = File.join(__dir__, 'consts', 'sys_nr', "#{arch}.rb")
|
105
121
|
return unless File.exist?(filename)
|
122
|
+
|
106
123
|
const_set(cons, instance_eval(IO.read(filename)))
|
107
124
|
end
|
125
|
+
|
126
|
+
def load_args
|
127
|
+
hash = instance_eval(IO.read(File.join(__dir__, 'consts', 'sys_arg.rb')))
|
128
|
+
Hash.new do |_h, k|
|
129
|
+
next hash[k] if hash[k]
|
130
|
+
next hash[k.to_s[4..-1].to_sym] if k.to_s.start_with?('x32_')
|
131
|
+
|
132
|
+
nil
|
133
|
+
end
|
134
|
+
end
|
108
135
|
end
|
109
136
|
|
137
|
+
# The argument names of all syscalls.
|
138
|
+
SYS_ARG = Syscall.load_args.freeze
|
139
|
+
|
110
140
|
# Constants from https://github.com/torvalds/linux/blob/master/include/uapi/linux/audit.h.
|
111
141
|
module Audit
|
112
142
|
# AUDIT_ARCH_*
|
113
143
|
ARCH = {
|
114
144
|
'ARCH_X86_64' => 0xc000003e,
|
115
|
-
'ARCH_I386' => 0x40000003
|
145
|
+
'ARCH_I386' => 0x40000003,
|
146
|
+
'ARCH_AARCH64' => 0xc00000b7
|
116
147
|
}.freeze
|
117
148
|
end
|
118
149
|
end
|
@@ -0,0 +1,432 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Generated by `bundle exec rake sys_arg`
|
4
|
+
|
5
|
+
{
|
6
|
+
io_setup: %w[nr_reqs ctx],
|
7
|
+
io_destroy: %w[ctx],
|
8
|
+
io_cancel: %w[ctx_id iocb result],
|
9
|
+
io_getevents: %w[ctx_id min_nr nr events timeout],
|
10
|
+
io_getevents_time32: %w[ctx_id min_nr nr events timeout],
|
11
|
+
io_pgetevents: %w[ctx_id min_nr nr events timeout sig],
|
12
|
+
io_pgetevents_time32: %w[ctx_id min_nr nr events timeout sig],
|
13
|
+
io_uring_setup: %w[entries p],
|
14
|
+
io_uring_enter: %w[fd to_submit min_complete flags sig sigsz],
|
15
|
+
io_uring_register: %w[fd op arg nr_args],
|
16
|
+
setxattr: %w[path name value size flags],
|
17
|
+
lsetxattr: %w[path name value size flags],
|
18
|
+
fsetxattr: %w[fd name value size flags],
|
19
|
+
getxattr: %w[path name value size],
|
20
|
+
lgetxattr: %w[path name value size],
|
21
|
+
fgetxattr: %w[fd name value size],
|
22
|
+
listxattr: %w[path list size],
|
23
|
+
llistxattr: %w[path list size],
|
24
|
+
flistxattr: %w[fd list size],
|
25
|
+
removexattr: %w[path name],
|
26
|
+
lremovexattr: %w[path name],
|
27
|
+
fremovexattr: %w[fd name],
|
28
|
+
getcwd: %w[buf size],
|
29
|
+
lookup_dcookie: %w[cookie64 buf len],
|
30
|
+
eventfd2: %w[count flags],
|
31
|
+
epoll_create1: %w[flags],
|
32
|
+
epoll_ctl: %w[epfd op fd event],
|
33
|
+
epoll_pwait: %w[epfd events maxevents timeout sigmask sigsetsize],
|
34
|
+
dup: %w[fildes],
|
35
|
+
dup3: %w[oldfd newfd flags],
|
36
|
+
fcntl: %w[fd cmd arg],
|
37
|
+
fcntl64: %w[fd cmd arg],
|
38
|
+
inotify_init1: %w[flags],
|
39
|
+
inotify_add_watch: %w[fd path mask],
|
40
|
+
inotify_rm_watch: %w[fd wd],
|
41
|
+
ioctl: %w[fd cmd arg],
|
42
|
+
ioprio_set: %w[which who ioprio],
|
43
|
+
ioprio_get: %w[which who],
|
44
|
+
flock: %w[fd cmd],
|
45
|
+
mknodat: %w[dfd filename mode dev],
|
46
|
+
mkdirat: %w[dfd pathname mode],
|
47
|
+
unlinkat: %w[dfd pathname flag],
|
48
|
+
symlinkat: %w[oldname newdfd newname],
|
49
|
+
linkat: %w[olddfd oldname newdfd newname flags],
|
50
|
+
renameat: %w[olddfd oldname newdfd newname],
|
51
|
+
umount: %w[name flags],
|
52
|
+
mount: %w[dev_name dir_name type flags data],
|
53
|
+
pivot_root: %w[new_root put_old],
|
54
|
+
statfs: %w[path buf],
|
55
|
+
statfs64: %w[path sz buf],
|
56
|
+
fstatfs: %w[fd buf],
|
57
|
+
fstatfs64: %w[fd sz buf],
|
58
|
+
truncate: %w[path length],
|
59
|
+
ftruncate: %w[fd length],
|
60
|
+
truncate64: %w[path length],
|
61
|
+
ftruncate64: %w[fd length],
|
62
|
+
fallocate: %w[fd mode offset len],
|
63
|
+
faccessat: %w[dfd filename mode],
|
64
|
+
chdir: %w[filename],
|
65
|
+
fchdir: %w[fd],
|
66
|
+
chroot: %w[filename],
|
67
|
+
fchmod: %w[fd mode],
|
68
|
+
fchmodat: %w[dfd filename mode],
|
69
|
+
fchownat: %w[dfd filename user group flag],
|
70
|
+
fchown: %w[fd user group],
|
71
|
+
openat: %w[dfd filename flags mode],
|
72
|
+
close: %w[fd],
|
73
|
+
vhangup: %w[],
|
74
|
+
pipe2: %w[fildes flags],
|
75
|
+
quotactl: %w[cmd special id addr],
|
76
|
+
getdents64: %w[fd dirent count],
|
77
|
+
llseek: %w[fd offset_high offset_low result whence],
|
78
|
+
lseek: %w[fd offset whence],
|
79
|
+
read: %w[fd buf count],
|
80
|
+
write: %w[fd buf count],
|
81
|
+
readv: %w[fd vec vlen],
|
82
|
+
writev: %w[fd vec vlen],
|
83
|
+
pread64: %w[fd buf count pos],
|
84
|
+
pwrite64: %w[fd buf count pos],
|
85
|
+
preadv: %w[fd vec vlen pos_l pos_h],
|
86
|
+
pwritev: %w[fd vec vlen pos_l pos_h],
|
87
|
+
sendfile64: %w[out_fd in_fd offset count],
|
88
|
+
signalfd4: %w[ufd user_mask sizemask flags],
|
89
|
+
vmsplice: %w[fd iov nr_segs flags],
|
90
|
+
splice: %w[fd_in off_in fd_out off_out len flags],
|
91
|
+
tee: %w[fdin fdout len flags],
|
92
|
+
readlinkat: %w[dfd path buf bufsiz],
|
93
|
+
newfstatat: %w[dfd filename statbuf flag],
|
94
|
+
newfstat: %w[fd statbuf],
|
95
|
+
fstat64: %w[fd statbuf],
|
96
|
+
fstatat64: %w[dfd filename statbuf flag],
|
97
|
+
sync: %w[],
|
98
|
+
fsync: %w[fd],
|
99
|
+
fdatasync: %w[fd],
|
100
|
+
sync_file_range2: %w[fd flags offset nbytes],
|
101
|
+
sync_file_range: %w[fd offset nbytes flags],
|
102
|
+
timerfd_create: %w[clockid flags],
|
103
|
+
timerfd_settime: %w[ufd flags utmr otmr],
|
104
|
+
timerfd_gettime: %w[ufd otmr],
|
105
|
+
timerfd_gettime32: %w[ufd otmr],
|
106
|
+
timerfd_settime32: %w[ufd flags utmr otmr],
|
107
|
+
utimensat: %w[dfd filename utimes flags],
|
108
|
+
utimensat_time32: %w[dfd filename t flags],
|
109
|
+
acct: %w[name],
|
110
|
+
capget: %w[header dataptr],
|
111
|
+
capset: %w[header data],
|
112
|
+
personality: %w[personality],
|
113
|
+
exit: %w[error_code],
|
114
|
+
exit_group: %w[error_code],
|
115
|
+
waitid: %w[which pid infop options ru],
|
116
|
+
set_tid_address: %w[tidptr],
|
117
|
+
unshare: %w[unshare_flags],
|
118
|
+
futex: %w[uaddr op val utime uaddr2 val3],
|
119
|
+
futex_time32: %w[uaddr op val utime uaddr2 val3],
|
120
|
+
get_robust_list: %w[pid head_ptr len_ptr],
|
121
|
+
set_robust_list: %w[head len],
|
122
|
+
nanosleep: %w[rqtp rmtp],
|
123
|
+
nanosleep_time32: %w[rqtp rmtp],
|
124
|
+
getitimer: %w[which value],
|
125
|
+
setitimer: %w[which value ovalue],
|
126
|
+
kexec_load: %w[entry nr_segments segments flags],
|
127
|
+
init_module: %w[umod len uargs],
|
128
|
+
delete_module: %w[name_user flags],
|
129
|
+
timer_create: %w[which_clock timer_event_spec created_timer_id],
|
130
|
+
timer_gettime: %w[timer_id setting],
|
131
|
+
timer_getoverrun: %w[timer_id],
|
132
|
+
timer_settime: %w[timer_id flags new_setting old_setting],
|
133
|
+
timer_delete: %w[timer_id],
|
134
|
+
clock_settime: %w[which_clock tp],
|
135
|
+
clock_gettime: %w[which_clock tp],
|
136
|
+
clock_getres: %w[which_clock tp],
|
137
|
+
clock_nanosleep: %w[which_clock flags rqtp rmtp],
|
138
|
+
timer_gettime32: %w[timer_id setting],
|
139
|
+
timer_settime32: %w[timer_id flags new old],
|
140
|
+
clock_settime32: %w[which_clock tp],
|
141
|
+
clock_gettime32: %w[which_clock tp],
|
142
|
+
clock_getres_time32: %w[which_clock tp],
|
143
|
+
clock_nanosleep_time32: %w[which_clock flags rqtp rmtp],
|
144
|
+
syslog: %w[type buf len],
|
145
|
+
ptrace: %w[request pid addr data],
|
146
|
+
sched_setparam: %w[pid param],
|
147
|
+
sched_setscheduler: %w[pid policy param],
|
148
|
+
sched_getscheduler: %w[pid],
|
149
|
+
sched_getparam: %w[pid param],
|
150
|
+
sched_setaffinity: %w[pid len user_mask_ptr],
|
151
|
+
sched_getaffinity: %w[pid len user_mask_ptr],
|
152
|
+
sched_yield: %w[],
|
153
|
+
sched_get_priority_max: %w[policy],
|
154
|
+
sched_get_priority_min: %w[policy],
|
155
|
+
sched_rr_get_interval: %w[pid interval],
|
156
|
+
sched_rr_get_interval_time32: %w[pid interval],
|
157
|
+
restart_syscall: %w[],
|
158
|
+
kill: %w[pid sig],
|
159
|
+
tkill: %w[pid sig],
|
160
|
+
tgkill: %w[tgid pid sig],
|
161
|
+
sigaltstack: %w[uss uoss],
|
162
|
+
rt_sigsuspend: %w[unewset sigsetsize],
|
163
|
+
rt_sigprocmask: %w[how set oset sigsetsize],
|
164
|
+
rt_sigpending: %w[set sigsetsize],
|
165
|
+
rt_sigtimedwait: %w[uthese uinfo uts sigsetsize],
|
166
|
+
rt_sigtimedwait_time32: %w[uthese uinfo uts sigsetsize],
|
167
|
+
rt_sigqueueinfo: %w[pid sig uinfo],
|
168
|
+
setpriority: %w[which who niceval],
|
169
|
+
getpriority: %w[which who],
|
170
|
+
reboot: %w[magic1 magic2 cmd arg],
|
171
|
+
setregid: %w[rgid egid],
|
172
|
+
setgid: %w[gid],
|
173
|
+
setreuid: %w[ruid euid],
|
174
|
+
setuid: %w[uid],
|
175
|
+
setresuid: %w[ruid euid suid],
|
176
|
+
getresuid: %w[ruid euid suid],
|
177
|
+
setresgid: %w[rgid egid sgid],
|
178
|
+
getresgid: %w[rgid egid sgid],
|
179
|
+
setfsuid: %w[uid],
|
180
|
+
setfsgid: %w[gid],
|
181
|
+
times: %w[tbuf],
|
182
|
+
setpgid: %w[pid pgid],
|
183
|
+
getpgid: %w[pid],
|
184
|
+
getsid: %w[pid],
|
185
|
+
setsid: %w[],
|
186
|
+
getgroups: %w[gidsetsize grouplist],
|
187
|
+
setgroups: %w[gidsetsize grouplist],
|
188
|
+
newuname: %w[name],
|
189
|
+
sethostname: %w[name len],
|
190
|
+
setdomainname: %w[name len],
|
191
|
+
getrlimit: %w[resource rlim],
|
192
|
+
setrlimit: %w[resource rlim],
|
193
|
+
getrusage: %w[who ru],
|
194
|
+
umask: %w[mask],
|
195
|
+
prctl: %w[option arg2 arg3 arg4 arg5],
|
196
|
+
getcpu: %w[cpu node cache],
|
197
|
+
gettimeofday: %w[tv tz],
|
198
|
+
settimeofday: %w[tv tz],
|
199
|
+
adjtimex: %w[txc_p],
|
200
|
+
adjtimex_time32: %w[txc_p],
|
201
|
+
getpid: %w[],
|
202
|
+
getppid: %w[],
|
203
|
+
getuid: %w[],
|
204
|
+
geteuid: %w[],
|
205
|
+
getgid: %w[],
|
206
|
+
getegid: %w[],
|
207
|
+
gettid: %w[],
|
208
|
+
sysinfo: %w[info],
|
209
|
+
mq_open: %w[name oflag mode attr],
|
210
|
+
mq_unlink: %w[name],
|
211
|
+
mq_timedsend: %w[mqdes msg_ptr msg_len msg_prio abs_timeout],
|
212
|
+
mq_timedreceive: %w[mqdes msg_ptr msg_len msg_prio abs_timeout],
|
213
|
+
mq_notify: %w[mqdes notification],
|
214
|
+
mq_getsetattr: %w[mqdes mqstat omqstat],
|
215
|
+
mq_timedreceive_time32: %w[mqdes u_msg_ptr msg_len u_msg_prio u_abs_timeout],
|
216
|
+
mq_timedsend_time32: %w[mqdes u_msg_ptr msg_len msg_prio u_abs_timeout],
|
217
|
+
msgget: %w[key msgflg],
|
218
|
+
old_msgctl: %w[msqid cmd buf],
|
219
|
+
msgctl: %w[msqid cmd buf],
|
220
|
+
msgrcv: %w[msqid msgp msgsz msgtyp msgflg],
|
221
|
+
msgsnd: %w[msqid msgp msgsz msgflg],
|
222
|
+
semget: %w[key nsems semflg],
|
223
|
+
semctl: %w[semid semnum cmd arg],
|
224
|
+
old_semctl: %w[semid semnum cmd arg],
|
225
|
+
semtimedop: %w[semid sops nsops timeout],
|
226
|
+
semtimedop_time32: %w[semid sops nsops timeout],
|
227
|
+
semop: %w[semid sops nsops],
|
228
|
+
shmget: %w[key size flag],
|
229
|
+
old_shmctl: %w[shmid cmd buf],
|
230
|
+
shmctl: %w[shmid cmd buf],
|
231
|
+
shmat: %w[shmid shmaddr shmflg],
|
232
|
+
shmdt: %w[shmaddr],
|
233
|
+
setsockopt: %w[fd level optname optval optlen],
|
234
|
+
getsockopt: %w[fd level optname optval optlen],
|
235
|
+
sendmsg: %w[fd msg flags],
|
236
|
+
recvmsg: %w[fd msg flags],
|
237
|
+
readahead: %w[fd offset count],
|
238
|
+
brk: %w[brk],
|
239
|
+
munmap: %w[addr len],
|
240
|
+
mremap: %w[addr old_len new_len flags new_addr],
|
241
|
+
add_key: %w[_type _description _payload plen destringid],
|
242
|
+
request_key: %w[_type _description _callout_info destringid],
|
243
|
+
keyctl: %w[cmd arg2 arg3 arg4 arg5],
|
244
|
+
execve: %w[filename argv envp],
|
245
|
+
fadvise64_64: %w[fd offset len advice],
|
246
|
+
swapon: %w[specialfile swap_flags],
|
247
|
+
swapoff: %w[specialfile],
|
248
|
+
mprotect: %w[start len prot],
|
249
|
+
msync: %w[start len flags],
|
250
|
+
mlock: %w[start len],
|
251
|
+
munlock: %w[start len],
|
252
|
+
mlockall: %w[flags],
|
253
|
+
munlockall: %w[],
|
254
|
+
mincore: %w[start len vec],
|
255
|
+
madvise: %w[start len behavior],
|
256
|
+
remap_file_pages: %w[start size prot pgoff flags],
|
257
|
+
mbind: %w[start len mode nmask maxnode flags],
|
258
|
+
get_mempolicy: %w[policy nmask maxnode addr flags],
|
259
|
+
set_mempolicy: %w[mode nmask maxnode],
|
260
|
+
migrate_pages: %w[pid maxnode from to],
|
261
|
+
move_pages: %w[pid nr_pages pages nodes status flags],
|
262
|
+
rt_tgsigqueueinfo: %w[tgid pid sig uinfo],
|
263
|
+
perf_event_open: %w[attr_uptr pid cpu group_fd flags],
|
264
|
+
recvmmsg: %w[fd msg vlen flags timeout],
|
265
|
+
recvmmsg_time32: %w[fd msg vlen flags timeout],
|
266
|
+
wait4: %w[pid stat_addr options ru],
|
267
|
+
prlimit64: %w[pid resource new_rlim old_rlim],
|
268
|
+
fanotify_init: %w[flags event_f_flags],
|
269
|
+
fanotify_mark: %w[fanotify_fd flags mask fd pathname],
|
270
|
+
name_to_handle_at: %w[dfd name handle mnt_id flag],
|
271
|
+
open_by_handle_at: %w[mountdirfd handle flags],
|
272
|
+
clock_adjtime: %w[which_clock tx],
|
273
|
+
clock_adjtime32: %w[which_clock tx],
|
274
|
+
syncfs: %w[fd],
|
275
|
+
setns: %w[fd nstype],
|
276
|
+
sendmmsg: %w[fd msg vlen flags],
|
277
|
+
process_vm_readv: %w[pid lvec liovcnt rvec riovcnt flags],
|
278
|
+
process_vm_writev: %w[pid lvec liovcnt rvec riovcnt flags],
|
279
|
+
kcmp: %w[pid1 pid2 type idx1 idx2],
|
280
|
+
finit_module: %w[fd uargs flags],
|
281
|
+
sched_setattr: %w[pid attr flags],
|
282
|
+
sched_getattr: %w[pid attr size flags],
|
283
|
+
renameat2: %w[olddfd oldname newdfd newname flags],
|
284
|
+
seccomp: %w[op flags uargs],
|
285
|
+
getrandom: %w[buf count flags],
|
286
|
+
memfd_create: %w[uname_ptr flags],
|
287
|
+
bpf: %w[cmd attr size],
|
288
|
+
execveat: %w[dfd filename argv envp flags],
|
289
|
+
userfaultfd: %w[flags],
|
290
|
+
membarrier: %w[cmd flags],
|
291
|
+
mlock2: %w[start len flags],
|
292
|
+
copy_file_range: %w[fd_in off_in fd_out off_out len flags],
|
293
|
+
preadv2: %w[fd vec vlen pos_l pos_h flags],
|
294
|
+
pwritev2: %w[fd vec vlen pos_l pos_h flags],
|
295
|
+
pkey_mprotect: %w[start len prot pkey],
|
296
|
+
pkey_alloc: %w[flags init_val],
|
297
|
+
pkey_free: %w[pkey],
|
298
|
+
statx: %w[dfd path flags mask buffer],
|
299
|
+
rseq: %w[rseq rseq_len flags sig],
|
300
|
+
open_tree: %w[dfd path flags],
|
301
|
+
move_mount: %w[from_dfd from_path to_dfd to_path ms_flags],
|
302
|
+
fsopen: %w[fs_name flags],
|
303
|
+
fsconfig: %w[fs_fd cmd key value aux],
|
304
|
+
fsmount: %w[fs_fd flags ms_flags],
|
305
|
+
fspick: %w[dfd path flags],
|
306
|
+
pidfd_send_signal: %w[pidfd sig info flags],
|
307
|
+
ioperm: %w[from num on],
|
308
|
+
pciconfig_read: %w[bus dfn off len buf],
|
309
|
+
pciconfig_write: %w[bus dfn off len buf],
|
310
|
+
pciconfig_iobase: %w[which bus devfn],
|
311
|
+
spu_run: %w[fd unpc ustatus],
|
312
|
+
spu_create: %w[name flags mode fd],
|
313
|
+
open: %w[filename flags mode],
|
314
|
+
link: %w[oldname newname],
|
315
|
+
unlink: %w[pathname],
|
316
|
+
mknod: %w[filename mode dev],
|
317
|
+
chmod: %w[filename mode],
|
318
|
+
chown: %w[filename user group],
|
319
|
+
mkdir: %w[pathname mode],
|
320
|
+
rmdir: %w[pathname],
|
321
|
+
lchown: %w[filename user group],
|
322
|
+
access: %w[filename mode],
|
323
|
+
rename: %w[oldname newname],
|
324
|
+
symlink: %w[old new],
|
325
|
+
stat64: %w[filename statbuf],
|
326
|
+
lstat64: %w[filename statbuf],
|
327
|
+
pipe: %w[fildes],
|
328
|
+
dup2: %w[oldfd newfd],
|
329
|
+
epoll_create: %w[size],
|
330
|
+
inotify_init: %w[],
|
331
|
+
eventfd: %w[count],
|
332
|
+
signalfd: %w[ufd user_mask sizemask],
|
333
|
+
sendfile: %w[out_fd in_fd offset count],
|
334
|
+
newstat: %w[filename statbuf],
|
335
|
+
newlstat: %w[filename statbuf],
|
336
|
+
fadvise64: %w[fd offset len advice],
|
337
|
+
alarm: %w[seconds],
|
338
|
+
getpgrp: %w[],
|
339
|
+
pause: %w[],
|
340
|
+
time: %w[tloc],
|
341
|
+
time32: %w[tloc],
|
342
|
+
utime: %w[filename times],
|
343
|
+
utimes: %w[filename utimes],
|
344
|
+
futimesat: %w[dfd filename utimes],
|
345
|
+
futimesat_time32: %w[dfd filename t],
|
346
|
+
utime32: %w[filename t],
|
347
|
+
utimes_time32: %w[filename t],
|
348
|
+
creat: %w[pathname mode],
|
349
|
+
getdents: %w[fd dirent count],
|
350
|
+
select: %w[n inp outp exp tvp],
|
351
|
+
poll: %w[ufds nfds timeout],
|
352
|
+
epoll_wait: %w[epfd events maxevents timeout],
|
353
|
+
ustat: %w[dev ubuf],
|
354
|
+
vfork: %w[],
|
355
|
+
bdflush: %w[func data],
|
356
|
+
oldumount: %w[name],
|
357
|
+
uselib: %w[library],
|
358
|
+
sysctl: %w[args],
|
359
|
+
sysfs: %w[option arg1 arg2],
|
360
|
+
fork: %w[],
|
361
|
+
stime: %w[tptr],
|
362
|
+
stime32: %w[tptr],
|
363
|
+
sigpending: %w[uset],
|
364
|
+
sigprocmask: %w[how set oset],
|
365
|
+
sgetmask: %w[],
|
366
|
+
ssetmask: %w[newmask],
|
367
|
+
signal: %w[sig handler],
|
368
|
+
nice: %w[increment],
|
369
|
+
kexec_file_load: %w[kernel_fd initrd_fd cmdline_len cmdline_ptr flags],
|
370
|
+
waitpid: %w[pid stat_addr options],
|
371
|
+
chown16: %w[filename user group],
|
372
|
+
lchown16: %w[filename user group],
|
373
|
+
fchown16: %w[fd user group],
|
374
|
+
setregid16: %w[rgid egid],
|
375
|
+
setgid16: %w[gid],
|
376
|
+
setreuid16: %w[ruid euid],
|
377
|
+
setuid16: %w[uid],
|
378
|
+
setresuid16: %w[ruid euid suid],
|
379
|
+
getresuid16: %w[ruid euid suid],
|
380
|
+
setresgid16: %w[rgid egid sgid],
|
381
|
+
getresgid16: %w[rgid egid sgid],
|
382
|
+
setfsuid16: %w[uid],
|
383
|
+
setfsgid16: %w[gid],
|
384
|
+
getgroups16: %w[gidsetsize grouplist],
|
385
|
+
setgroups16: %w[gidsetsize grouplist],
|
386
|
+
getuid16: %w[],
|
387
|
+
geteuid16: %w[],
|
388
|
+
getgid16: %w[],
|
389
|
+
getegid16: %w[],
|
390
|
+
socketcall: %w[call args],
|
391
|
+
stat: %w[filename statbuf],
|
392
|
+
lstat: %w[filename statbuf],
|
393
|
+
fstat: %w[fd statbuf],
|
394
|
+
readlink: %w[path buf bufsiz],
|
395
|
+
old_select: %w[arg],
|
396
|
+
gethostname: %w[name len],
|
397
|
+
old_getrlimit: %w[resource rlim],
|
398
|
+
ipc: %w[call first second third ptr fifth],
|
399
|
+
mmap_pgoff: %w[addr len prot flags fd pgoff],
|
400
|
+
old_mmap: %w[arg],
|
401
|
+
ni_syscall: %w[],
|
402
|
+
io_submit: %w[ctx_id nr iocbpp],
|
403
|
+
pselect6: %w[n inp outp exp tsp sig],
|
404
|
+
pselect6_time32: %w[n inp outp exp tsp sig],
|
405
|
+
ppoll: %w[ufds nfds tsp sigmask sigsetsize],
|
406
|
+
ppoll_time32: %w[ufds nfds tsp sigmask sigsetsize],
|
407
|
+
rt_sigaction: %w[sig act oact sigsetsize],
|
408
|
+
socket: %w[family type protocol],
|
409
|
+
socketpair: %w[family type protocol usockvec],
|
410
|
+
bind: %w[fd umyaddr addrlen],
|
411
|
+
listen: %w[fd backlog],
|
412
|
+
accept: %w[fd upeer_sockaddr upeer_addrlen],
|
413
|
+
connect: %w[fd uservaddr addrlen],
|
414
|
+
getsockname: %w[fd usockaddr usockaddr_len],
|
415
|
+
getpeername: %w[fd usockaddr usockaddr_len],
|
416
|
+
sendto: %w[fd buff len flags addr addrlen],
|
417
|
+
recvfrom: %w[fd ubuf len flags addr addrlen],
|
418
|
+
shutdown: %w[fd how],
|
419
|
+
clone: %w[clone_flags newsp parent_tidptr child_tidptr tls],
|
420
|
+
accept4: %w[fd upeer_sockaddr upeer_addrlen flags],
|
421
|
+
recv: %w[fd ubuf len flags],
|
422
|
+
send: %w[fd buff len flags],
|
423
|
+
sigaction: %w[sig act oact],
|
424
|
+
old_readdir: %w[fd dirent count],
|
425
|
+
uname: %w[name],
|
426
|
+
olduname: %w[name],
|
427
|
+
arch_prctl: %w[code addr],
|
428
|
+
mmap: %w[addr len prot flags fd pgoff],
|
429
|
+
_llseek: %w[fd offset_high offset_low result whence],
|
430
|
+
_sysctl: %w[args],
|
431
|
+
_newselect: %w[n inp outp exp tvp]
|
432
|
+
}
|