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/instruction/base'
|
2
4
|
|
3
5
|
module SeccompTools
|
@@ -6,8 +8,7 @@ module SeccompTools
|
|
6
8
|
class RET < Base
|
7
9
|
# Decompile instruction.
|
8
10
|
def decompile
|
9
|
-
|
10
|
-
"return #{type == :a ? 'A' : ACTION.invert[type & 0x7fff0000]}"
|
11
|
+
"return #{ret_str}"
|
11
12
|
end
|
12
13
|
|
13
14
|
# See {Instruction::Base#symbolize}.
|
@@ -22,6 +23,17 @@ module SeccompTools
|
|
22
23
|
def branch(*)
|
23
24
|
[]
|
24
25
|
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def ret_str
|
30
|
+
_, type = symbolize
|
31
|
+
return 'A' if type == :a
|
32
|
+
|
33
|
+
str = ACTION.invert[type & SECCOMP_RET_ACTION_FULL].to_s
|
34
|
+
str << "(#{type & SECCOMP_RET_DATA})" if str == 'ERRNO'
|
35
|
+
str
|
36
|
+
end
|
25
37
|
end
|
26
38
|
end
|
27
39
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'seccomp-tools/instruction/ld'
|
2
4
|
|
3
5
|
module SeccompTools
|
@@ -10,7 +12,7 @@ module SeccompTools
|
|
10
12
|
end
|
11
13
|
|
12
14
|
# See {Instruction::Base#symbolize}.
|
13
|
-
# @return [[:
|
15
|
+
# @return [[:st, (:a, :x), Integer]]
|
14
16
|
def symbolize
|
15
17
|
[:st, reg.downcase.to_sym, k]
|
16
18
|
end
|
@@ -18,7 +20,7 @@ module SeccompTools
|
|
18
20
|
# @return [Array<(Integer, Context)>]
|
19
21
|
def branch(context)
|
20
22
|
ctx = context.dup
|
21
|
-
ctx
|
23
|
+
ctx.store(k, reg)
|
22
24
|
[[line + 1, ctx]]
|
23
25
|
end
|
24
26
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
|
5
|
+
require 'seccomp-tools/util'
|
6
|
+
|
7
|
+
module SeccompTools
|
8
|
+
# A logger for internal use.
|
9
|
+
#
|
10
|
+
# @private
|
11
|
+
module Logger
|
12
|
+
module_function
|
13
|
+
|
14
|
+
# Returns a +::Logger+ object for internal logging.
|
15
|
+
#
|
16
|
+
# @return [::Logger]
|
17
|
+
def logger
|
18
|
+
::Logger.new($stdout).tap do |log|
|
19
|
+
log.formatter = proc do |severity, _datetime, _progname, msg|
|
20
|
+
prep = ' ' * (severity.size + 3)
|
21
|
+
message = msg.lines.map.with_index do |str, i|
|
22
|
+
next str if i.zero?
|
23
|
+
|
24
|
+
str.strip.empty? ? str : prep + str
|
25
|
+
end
|
26
|
+
color = severity.downcase.to_sym
|
27
|
+
msg = +"[#{SeccompTools::Util.colorize(severity, t: color)}] #{message.join}"
|
28
|
+
msg << "\n" unless msg.end_with?("\n")
|
29
|
+
msg
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
%i[error].each do |sym|
|
35
|
+
define_method(sym) do |msg|
|
36
|
+
logger.__send__(sym, msg)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -1,13 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'os'
|
4
|
+
|
1
5
|
require 'seccomp-tools/const'
|
2
|
-
require 'seccomp-tools/ptrace'
|
6
|
+
require 'seccomp-tools/ptrace' if OS.linux?
|
3
7
|
|
4
8
|
module SeccompTools
|
5
9
|
# Record syscall number, arguments, return value.
|
6
10
|
class Syscall
|
7
11
|
# Syscall arguments offset of +struct user+ in different arch.
|
8
12
|
ABI = {
|
9
|
-
amd64: { number: 120, args: [112, 104, 96, 56, 72, 44], ret: 80, SYS_prctl: 157 },
|
10
|
-
i386: { number:
|
13
|
+
amd64: { number: 120, args: [112, 104, 96, 56, 72, 44], ret: 80, SYS_prctl: 157, SYS_seccomp: 317 },
|
14
|
+
i386: { number: 44, args: [0, 4, 8, 12, 16, 20], ret: 24, SYS_prctl: 172, SYS_seccomp: 354 },
|
15
|
+
aarch64: { number: 64, args: [0, 8, 16, 24, 32, 40, 48], ret: 0, SYS_prctl: 167, SYS_seccomp: 277 }
|
11
16
|
}.freeze
|
12
17
|
|
13
18
|
# @return [Integer] Process id.
|
@@ -27,17 +32,21 @@ module SeccompTools
|
|
27
32
|
def initialize(pid)
|
28
33
|
@pid = pid
|
29
34
|
raise ArgumentError, "Only supports #{ABI.keys.join(', ')}" if ABI[arch].nil?
|
35
|
+
|
30
36
|
@abi = ABI[arch]
|
31
37
|
@number = peek(abi[:number])
|
32
38
|
@args = abi[:args].map { |off| peek(off) }
|
33
39
|
@ret = peek(abi[:ret])
|
34
40
|
end
|
35
41
|
|
36
|
-
# Is this a +prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, addr)+ syscall?
|
42
|
+
# Is this a +seccomp(SECCOMP_MODE_FILTER, addr)+/+prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, addr)+ syscall?
|
43
|
+
#
|
37
44
|
# @return [Boolean]
|
38
45
|
# +true+ for is a seccomp installation syscall.
|
39
46
|
def set_seccomp?
|
40
|
-
# TODO: handle SECCOMP_MODE_STRICT
|
47
|
+
# TODO: handle SECCOMP_MODE_SET_STRICT / SECCOMP_MODE_STRICT
|
48
|
+
return true if number == abi[:SYS_seccomp] && args[0] == Const::BPF::SECCOMP_SET_MODE_FILTER
|
49
|
+
|
41
50
|
number == abi[:SYS_prctl] && args[0] == Const::BPF::PR_SET_SECCOMP && args[1] == Const::BPF::SECCOMP_MODE_FILTER
|
42
51
|
end
|
43
52
|
|
@@ -54,10 +63,11 @@ module SeccompTools
|
|
54
63
|
# Architecture of this syscall.
|
55
64
|
def arch
|
56
65
|
@arch ||= File.open("/proc/#{pid}/exe", 'rb') do |f|
|
57
|
-
f.pos =
|
66
|
+
f.pos = 18
|
58
67
|
case f.read(1).ord
|
59
|
-
when
|
60
|
-
when
|
68
|
+
when 3 then :i386
|
69
|
+
when 62 then :amd64
|
70
|
+
when 183 then :aarch64
|
61
71
|
end
|
62
72
|
end
|
63
73
|
end
|
@@ -65,14 +75,15 @@ module SeccompTools
|
|
65
75
|
private
|
66
76
|
|
67
77
|
def bits
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
78
|
+
{
|
79
|
+
i386: 32,
|
80
|
+
amd64: 64,
|
81
|
+
aarch64: 64
|
82
|
+
}[arch]
|
72
83
|
end
|
73
84
|
|
74
85
|
def peek(offset)
|
75
|
-
Ptrace.peekuser(pid, offset, 0)
|
86
|
+
Ptrace.peekuser(pid, offset, 0, bits)
|
76
87
|
end
|
77
88
|
end
|
78
89
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
install_seccomp:
|
2
|
+
push rbp
|
3
|
+
mov rbp, rsp
|
4
|
+
push 38
|
5
|
+
pop rdi
|
6
|
+
push 0x1
|
7
|
+
pop rsi
|
8
|
+
xor eax, eax
|
9
|
+
mov al, 0x9d
|
10
|
+
syscall
|
11
|
+
push 22
|
12
|
+
pop rdi
|
13
|
+
lea rdx, [rip + _filter]
|
14
|
+
push rdx /* .filter */
|
15
|
+
push _filter_end - _filter >> 3 /* .len */
|
16
|
+
mov rdx, rsp
|
17
|
+
push 0x2
|
18
|
+
pop rsi
|
19
|
+
xor eax, eax
|
20
|
+
mov al, 0x9d
|
21
|
+
syscall
|
22
|
+
leave
|
23
|
+
ret
|
24
|
+
_filter:
|
25
|
+
.ascii "<TO_BE_REPLACED>"
|
26
|
+
_filter_end:
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#include <linux/seccomp.h>
|
2
|
+
#include <stdio.h>
|
3
|
+
#include <stdlib.h>
|
4
|
+
#include <sys/prctl.h>
|
5
|
+
|
6
|
+
static void install_seccomp() {
|
7
|
+
static unsigned char filter[] = {<TO_BE_REPLACED>};
|
8
|
+
struct prog {
|
9
|
+
unsigned short len;
|
10
|
+
unsigned char *filter;
|
11
|
+
} rule = {
|
12
|
+
.len = sizeof(filter) >> 3,
|
13
|
+
.filter = filter
|
14
|
+
};
|
15
|
+
if(prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0) { perror("prctl(PR_SET_NO_NEW_PRIVS)"); exit(2); }
|
16
|
+
if(prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &rule) < 0) { perror("prctl(PR_SET_SECCOMP)"); exit(2); }
|
17
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
install_seccomp:
|
2
|
+
push ebx
|
3
|
+
push ebp
|
4
|
+
mov ebp, esp
|
5
|
+
push 38
|
6
|
+
pop ebx
|
7
|
+
push 0x1
|
8
|
+
pop ecx
|
9
|
+
xor eax, eax
|
10
|
+
mov al, 0xac
|
11
|
+
int 0x80
|
12
|
+
push 22
|
13
|
+
pop ebx
|
14
|
+
jmp __get_eip__
|
15
|
+
__back__:
|
16
|
+
pop edx
|
17
|
+
push edx /* .filter */
|
18
|
+
mov edx, _filter_end - _filter >> 3 /* .len */
|
19
|
+
push edx
|
20
|
+
mov edx, esp
|
21
|
+
push 0x2
|
22
|
+
pop ecx
|
23
|
+
xor eax, eax
|
24
|
+
mov al, 0xac
|
25
|
+
int 0x80
|
26
|
+
leave
|
27
|
+
pop ebx
|
28
|
+
ret
|
29
|
+
__get_eip__:
|
30
|
+
call __back__
|
31
|
+
_filter:
|
32
|
+
.ascii "<TO_BE_REPLACED>"
|
33
|
+
_filter_end:
|
data/lib/seccomp-tools/util.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module SeccompTools
|
2
4
|
# Define utility methods.
|
3
5
|
module Util
|
@@ -7,7 +9,9 @@ module SeccompTools
|
|
7
9
|
# @return [Array<Symbol>]
|
8
10
|
# Architectures.
|
9
11
|
def supported_archs
|
10
|
-
@
|
12
|
+
@supported_archs ||= Dir.glob(File.join(__dir__, 'consts', 'sys_nr', '*.rb'))
|
13
|
+
.map { |f| File.basename(f, '.rb').to_sym }
|
14
|
+
.sort
|
11
15
|
end
|
12
16
|
|
13
17
|
# Detect system architecture.
|
@@ -16,6 +20,7 @@ module SeccompTools
|
|
16
20
|
case RbConfig::CONFIG['host_cpu']
|
17
21
|
when /x86_64/ then :amd64
|
18
22
|
when /i386/ then :i386
|
23
|
+
when /aarch64/ then :aarch64
|
19
24
|
else :unknown
|
20
25
|
end
|
21
26
|
end
|
@@ -38,12 +43,16 @@ module SeccompTools
|
|
38
43
|
!@disable_color && $stdout.tty?
|
39
44
|
end
|
40
45
|
|
46
|
+
# color code of light yellow
|
47
|
+
LIGHT_YELLOW = "\e[38;5;230m"
|
41
48
|
# Color codes for pretty print.
|
42
49
|
COLOR_CODE = {
|
43
50
|
esc_m: "\e[0m",
|
44
51
|
syscall: "\e[38;5;120m", # light green
|
45
|
-
arch:
|
46
|
-
|
52
|
+
arch: LIGHT_YELLOW,
|
53
|
+
args: LIGHT_YELLOW,
|
54
|
+
gray: "\e[2m",
|
55
|
+
error: "\e[38;5;196m" # heavy red
|
47
56
|
}.freeze
|
48
57
|
# Wrapper color codes.
|
49
58
|
# @param [String] s
|
@@ -55,9 +64,21 @@ module SeccompTools
|
|
55
64
|
def colorize(s, t: nil)
|
56
65
|
s = s.to_s
|
57
66
|
return s unless colorize_enabled?
|
67
|
+
|
58
68
|
cc = COLOR_CODE
|
59
69
|
color = cc[t]
|
60
70
|
"#{color}#{s.sub(cc[:esc_m], cc[:esc_m] + color)}#{cc[:esc_m]}"
|
61
71
|
end
|
72
|
+
|
73
|
+
# Get content of filename under directory templates/.
|
74
|
+
#
|
75
|
+
# @param [String] filename
|
76
|
+
# The filename.
|
77
|
+
#
|
78
|
+
# @return [String]
|
79
|
+
# Content of the file.
|
80
|
+
def template(filename)
|
81
|
+
IO.binread(File.join(__dir__, 'templates', filename))
|
82
|
+
end
|
62
83
|
end
|
63
84
|
end
|
metadata
CHANGED
@@ -1,127 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seccomp-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- david942j
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '13.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '13.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rake-compiler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0
|
33
|
+
version: '1.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0
|
40
|
+
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.9'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.9'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
61
|
+
version: '1.1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1.
|
68
|
+
version: '1.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: simplecov
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
-
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '3.5'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
75
|
+
version: '0.17'
|
76
|
+
- - "<"
|
88
77
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
78
|
+
version: '0.18'
|
90
79
|
type: :development
|
91
80
|
prerelease: false
|
92
81
|
version_requirements: !ruby/object:Gem::Requirement
|
93
82
|
requirements:
|
94
83
|
- - "~>"
|
95
84
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
85
|
+
version: '0.17'
|
86
|
+
- - "<"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0.18'
|
97
89
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
90
|
+
name: yard
|
99
91
|
requirement: !ruby/object:Gem::Requirement
|
100
92
|
requirements:
|
101
93
|
- - "~>"
|
102
94
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
95
|
+
version: '0.9'
|
104
96
|
type: :development
|
105
97
|
prerelease: false
|
106
98
|
version_requirements: !ruby/object:Gem::Requirement
|
107
99
|
requirements:
|
108
100
|
- - "~>"
|
109
101
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
102
|
+
version: '0.9'
|
111
103
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
104
|
+
name: os
|
113
105
|
requirement: !ruby/object:Gem::Requirement
|
114
106
|
requirements:
|
115
107
|
- - "~>"
|
116
108
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
118
|
-
|
109
|
+
version: '1.1'
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 1.1.1
|
113
|
+
type: :runtime
|
119
114
|
prerelease: false
|
120
115
|
version_requirements: !ruby/object:Gem::Requirement
|
121
116
|
requirements:
|
122
117
|
- - "~>"
|
123
118
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
119
|
+
version: '1.1'
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 1.1.1
|
125
123
|
description: |
|
126
124
|
Provide useful tools to analyze seccomp rules.
|
127
125
|
Visit https://github.com/david942j/seccomp-tools for more details.
|
@@ -149,8 +147,10 @@ files:
|
|
149
147
|
- lib/seccomp-tools/cli/dump.rb
|
150
148
|
- lib/seccomp-tools/cli/emu.rb
|
151
149
|
- lib/seccomp-tools/const.rb
|
152
|
-
- lib/seccomp-tools/consts/
|
153
|
-
- lib/seccomp-tools/consts/
|
150
|
+
- lib/seccomp-tools/consts/sys_arg.rb
|
151
|
+
- lib/seccomp-tools/consts/sys_nr/aarch64.rb
|
152
|
+
- lib/seccomp-tools/consts/sys_nr/amd64.rb
|
153
|
+
- lib/seccomp-tools/consts/sys_nr/i386.rb
|
154
154
|
- lib/seccomp-tools/disasm/context.rb
|
155
155
|
- lib/seccomp-tools/disasm/disasm.rb
|
156
156
|
- lib/seccomp-tools/dumper.rb
|
@@ -165,13 +165,21 @@ files:
|
|
165
165
|
- lib/seccomp-tools/instruction/ret.rb
|
166
166
|
- lib/seccomp-tools/instruction/st.rb
|
167
167
|
- lib/seccomp-tools/instruction/stx.rb
|
168
|
+
- lib/seccomp-tools/logger.rb
|
168
169
|
- lib/seccomp-tools/syscall.rb
|
170
|
+
- lib/seccomp-tools/templates/asm.amd64.asm
|
171
|
+
- lib/seccomp-tools/templates/asm.c
|
172
|
+
- lib/seccomp-tools/templates/asm.i386.asm
|
169
173
|
- lib/seccomp-tools/util.rb
|
170
174
|
- lib/seccomp-tools/version.rb
|
171
|
-
homepage:
|
175
|
+
homepage:
|
172
176
|
licenses:
|
173
177
|
- MIT
|
174
|
-
metadata:
|
178
|
+
metadata:
|
179
|
+
bug_tracker_uri: https://github.com/david942j/seccomp-tools/issues
|
180
|
+
documentation_uri: https://www.rubydoc.info/github/david942j/seccomp-tools/master
|
181
|
+
homepage_uri: https://github.com/david942j/seccomp-tools
|
182
|
+
source_code_uri: https://github.com/david942j/seccomp-tools
|
175
183
|
post_install_message:
|
176
184
|
rdoc_options: []
|
177
185
|
require_paths:
|
@@ -180,15 +188,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
188
|
requirements:
|
181
189
|
- - ">="
|
182
190
|
- !ruby/object:Gem::Version
|
183
|
-
version: 2.
|
191
|
+
version: '2.4'
|
184
192
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
193
|
requirements:
|
186
194
|
- - ">="
|
187
195
|
- !ruby/object:Gem::Version
|
188
196
|
version: '0'
|
189
197
|
requirements: []
|
190
|
-
|
191
|
-
rubygems_version: 2.5.2
|
198
|
+
rubygems_version: 3.1.4
|
192
199
|
signing_key:
|
193
200
|
specification_version: 4
|
194
201
|
summary: seccomp-tools
|