seccomp-tools 1.1.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|