summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/drb/test_drb.rb15
-rw-r--r--test/drb/ut_eval.rb10
-rw-r--r--test/drb/ut_safe1.rb5
3 files changed, 25 insertions, 5 deletions
diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index 6764e913ca..ae8ba4252a 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -217,7 +217,7 @@ class TestDRbEval < Test::Unit::TestCase
@ext.stop_service
end
- def test_01_safe1_eval
+ def test_01_safe1_safe4_eval
assert_raises(SecurityError) do
@there.method_missing(:instance_eval, 'ENV.inspect')
end
@@ -235,6 +235,19 @@ class TestDRbEval < Test::Unit::TestCase
assert_raises(SecurityError) do
remote_class.module_eval('ENV.inspect')
end
+
+ four = @there.four
+ assert_equal(1, four.method_missing(:send, :eval, '1'))
+
+ remote_class = four.remote_class
+
+ assert_raises(SecurityError) do
+ remote_class.class_eval('ENV.inspect')
+ end
+
+ assert_raises(SecurityError) do
+ remote_class.module_eval('ENV.inspect')
+ end
end
end
diff --git a/test/drb/ut_eval.rb b/test/drb/ut_eval.rb
index 6a81e17d05..4df963e7cd 100644
--- a/test/drb/ut_eval.rb
+++ b/test/drb/ut_eval.rb
@@ -2,6 +2,14 @@ require 'drb/drb'
require 'drb/extserv'
class EvalAttack
+ def initialize
+ @four = DRb::DRbServer.new('druby://localhost:0', self, {:safe_level => 4})
+ end
+
+ def four
+ DRbObject.new_with_uri(@four.uri)
+ end
+
def remote_class
DRbObject.new(self.class)
end
@@ -17,7 +25,7 @@ if __FILE__ == $0
$SAFE = 1
- DRb.start_service('druby://localhost:0', EvalAttack.new)
+ DRb.start_service('druby://localhost:0', EvalAttack.new, {:safe_level => 2})
es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
DRb.thread.join
end
diff --git a/test/drb/ut_safe1.rb b/test/drb/ut_safe1.rb
index 761bdff4b1..4df8e1e5a1 100644
--- a/test/drb/ut_safe1.rb
+++ b/test/drb/ut_safe1.rb
@@ -8,9 +8,8 @@ if __FILE__ == $0
it
end
- $SAFE = 1
-
- DRb.start_service('druby://localhost:0', [1, 2, 'III', 4, "five", 6])
+ DRb.start_service('druby://localhost:0', [1, 2, 'III', 4, "five", 6],
+ {:safe_level => 1})
es = DRb::ExtServ.new(ARGV.shift, ARGV.shift)
DRb.thread.join
end