seccomp-tools 1.6.0 → 1.6.1
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 +4 -4
- data/lib/seccomp-tools/asm/compiler.rb +16 -12
- data/lib/seccomp-tools/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc7a6ded95dadf7826ae07868793839e0ffa417ed936ae8461ff5bb6b59ff135
|
4
|
+
data.tar.gz: 82a0f811819137309ea22d68fe21fec5d48aad7b96f142b981c57478146a47af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d630e759687a7641d8cdeb4012a433a4fedc67c2f3e322c4cfaf041428e1199a2c46dd5db50c36a00a79a5b203f648f90345ac4ad6654b0cba93344c6737158
|
7
|
+
data.tar.gz: 23a441eb5cf55d3eb18a91a20e4b23a242e7b9b381dab81457ab3b087d9c53847e2d47be161c11305f213e629a23403b806e1a8e31e89adbd90443d1f79ef301
|
@@ -71,14 +71,11 @@ module SeccompTools
|
|
71
71
|
|
72
72
|
jt = resolve_symbol(idx, statement.data[1])
|
73
73
|
jf = resolve_symbol(idx, statement.data[2])
|
74
|
-
statement.data[1] = jt
|
75
|
-
statement.data[2] = jf
|
74
|
+
statement.data[1] = [jt, statement.data[1]]
|
75
|
+
statement.data[2] = [jf, statement.data[2]]
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
# The farthest distance of a relative jump in BPF.
|
80
|
-
JUMP_DISTANCE_MAX = 255
|
81
|
-
|
82
79
|
# @param [Integer] index
|
83
80
|
# @param [SeccompTools::Asm::Token, :next] sym
|
84
81
|
def resolve_symbol(index, sym)
|
@@ -89,7 +86,7 @@ module SeccompTools
|
|
89
86
|
|
90
87
|
if @symbols[str].nil?
|
91
88
|
# special case - goto <n> can be considered as $+1+<n>
|
92
|
-
return str.to_i if str == str.to_i.to_s
|
89
|
+
return str.to_i if str == str.to_i.to_s
|
93
90
|
|
94
91
|
raise SeccompTools::UndefinedLabelError,
|
95
92
|
@scanner.format_error(sym, "Cannot find label '#{str}'")
|
@@ -100,10 +97,6 @@ module SeccompTools
|
|
100
97
|
raise SeccompTools::BackwardJumpError,
|
101
98
|
@scanner.format_error(sym, "Does not support backward jumping to '#{str}'")
|
102
99
|
end
|
103
|
-
if dis > JUMP_DISTANCE_MAX
|
104
|
-
raise SeccompTools::LongJumpError,
|
105
|
-
@scanner.format_error(sym, "Does not support jumping farther than #{JUMP_DISTANCE_MAX}, got: #{dis}")
|
106
|
-
end
|
107
100
|
end
|
108
101
|
end
|
109
102
|
|
@@ -176,10 +169,21 @@ module SeccompTools
|
|
176
169
|
emit(:ret, src, k: val.to_i)
|
177
170
|
end
|
178
171
|
|
179
|
-
|
172
|
+
# The farthest distance of a relative jump in BPF.
|
173
|
+
JUMP_DISTANCE_MAX = 255
|
174
|
+
|
175
|
+
def emit_cmp(cmp, jt_sym, jf_sym)
|
176
|
+
jt = jt_sym[0]
|
177
|
+
jf = jf_sym[0]
|
180
178
|
jop, jt, jf = convert_jmp_op(cmp, jt, jf)
|
181
|
-
return emit(:jmp,
|
179
|
+
return emit(:jmp, :none, 0, jt: 0, jf: 0, k: jt) if jop == :ja || jt == jf
|
182
180
|
|
181
|
+
[jt_sym, jf_sym].each do |dis, sym|
|
182
|
+
if dis > JUMP_DISTANCE_MAX
|
183
|
+
raise SeccompTools::LongJumpError,
|
184
|
+
@scanner.format_error(sym, "Does not support jumping farther than #{JUMP_DISTANCE_MAX}, got: #{dis}")
|
185
|
+
end
|
186
|
+
end
|
183
187
|
val = cmp[1]
|
184
188
|
src = val.x? ? :x : :k
|
185
189
|
k = val.x? ? 0 : val.to_i
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seccomp-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- david942j
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|