safemode 2.0.0 → 2.0.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/safemode/blankslate.rb +1 -1
- data/lib/safemode/scope.rb +3 -1
- data/safemode.gemspec +1 -1
- data/test/test_jail.rb +1 -1
- data/test/test_safemode_eval.rb +6 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 40a1741832354330b11f393a5cfbccefea3c165b9b41095a2cbcfb7542011216
|
|
4
|
+
data.tar.gz: 7b0816b3ca652d372ee101462956771cce07b3be399064761b6331c8c20f34d6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4e2514a18771315f1573f28d7cee37bbb20db86912c1c4048bba7a6d86c2c4f9a13ced4f21bc33d6b3197c43ca71a9a5c2a94e66dfd8bd4772c3d865f74a5b08
|
|
7
|
+
data.tar.gz: 0bc183b2c7f78d64f2751365300668942c3b5010ced55cb49f18f34818b8ce65c795fe470c78812c3ee5f79350bb562fb59cb39eab9d0b48a85434197428e741
|
data/lib/safemode/blankslate.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Safemode
|
|
2
2
|
class Blankslate
|
|
3
|
-
@@allow_instance_methods = ['class', 'methods', 'respond_to?', 'respond_to_missing?', 'to_s'
|
|
3
|
+
@@allow_instance_methods = ['class', 'methods', 'respond_to?', 'respond_to_missing?', 'to_s']
|
|
4
4
|
@@allow_class_methods = ['singleton_class?', 'methods', 'new', 'name', '<', 'ancestors', '=='] # < needed in Rails Object#subclasses_of
|
|
5
5
|
if defined?(JRUBY_VERSION)
|
|
6
6
|
# JRuby seems to silently fail to remove method_missing
|
data/lib/safemode/scope.rb
CHANGED
|
@@ -49,8 +49,10 @@ module Safemode
|
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
+
IVAR_GET = Object.instance_method(:instance_variable_get)
|
|
53
|
+
|
|
52
54
|
def unjail(arg)
|
|
53
|
-
arg.class.name.end_with?('::Jail') ?
|
|
55
|
+
arg.class.name.end_with?('::Jail') ? IVAR_GET.bind_call(arg, :@source) : arg
|
|
54
56
|
end
|
|
55
57
|
|
|
56
58
|
def unjail_args(args)
|
data/safemode.gemspec
CHANGED
data/test/test_jail.rb
CHANGED
|
@@ -37,7 +37,7 @@ class TestJail < Test::Unit::TestCase
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def test_jail_instances_should_have_limited_methods
|
|
40
|
-
expected = ["class", "method_missing", "methods", "respond_to?", "to_jail", "to_s"
|
|
40
|
+
expected = ["class", "method_missing", "methods", "respond_to?", "to_jail", "to_s"]
|
|
41
41
|
objects.each do |object|
|
|
42
42
|
assert_equal expected.sort, reject_pretty_methods(object.to_jail.methods.map(&:to_s).sort)
|
|
43
43
|
end
|
data/test/test_safemode_eval.rb
CHANGED
|
@@ -195,6 +195,12 @@ class TestSafemodeEval < Test::Unit::TestCase
|
|
|
195
195
|
assert_equal "new_value", article.status
|
|
196
196
|
end
|
|
197
197
|
|
|
198
|
+
def test_instance_variable_get_blocked_on_jail
|
|
199
|
+
assert_raise(Safemode::NoMethodError) do
|
|
200
|
+
@box.eval('@article.instance_variable_get(:@source)', @assigns)
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
|
|
198
204
|
def test_lambda_is_blocked
|
|
199
205
|
assert_raise(Safemode::SecurityError) { @box.eval('-> { 1 }') }
|
|
200
206
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: safemode
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sven Fuchs
|
|
@@ -12,7 +12,7 @@ authors:
|
|
|
12
12
|
- Dmitri Dolguikh
|
|
13
13
|
bindir: bin
|
|
14
14
|
cert_chain: []
|
|
15
|
-
date: 2026-
|
|
15
|
+
date: 2026-10-01 00:00:00.000000000 Z
|
|
16
16
|
dependencies:
|
|
17
17
|
- !ruby/object:Gem::Dependency
|
|
18
18
|
name: ruby2ruby
|
|
@@ -165,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
166
|
version: '0'
|
|
167
167
|
requirements: []
|
|
168
|
-
rubygems_version: 4.0.
|
|
168
|
+
rubygems_version: 4.0.20
|
|
169
169
|
specification_version: 4
|
|
170
170
|
summary: A library for safe evaluation of Ruby code based on Prism and Ruby2Ruby
|
|
171
171
|
test_files: []
|