summaryrefslogtreecommitdiff
path: root/test/win32ole
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-09-20 19:06:22 -0700
committerJeremy Evans <code@jeremyevans.net>2019-11-18 01:00:25 +0200
commitc5c05460ac20abcbc0ed686eb4acf06da7a39a79 (patch)
tree991109a68f3b1cd2e256a936701d3b2badd3ddac /test/win32ole
parent7b6a8b5b54448235e17ed187d9d73f56893e1b6f (diff)
downloadruby-c5c05460ac20abcbc0ed686eb4acf06da7a39a79.tar.gz
Warn on access/modify of $SAFE, and remove effects of modifying $SAFE
This removes the security features added by $SAFE = 1, and warns for access or modification of $SAFE from Ruby-level, as well as warning when calling all public C functions related to $SAFE. This modifies some internal functions that took a safe level argument to no longer take the argument. rb_require_safe now warns, rb_require_string has been added as a version that takes a VALUE and does not warn. One public C function that still takes a safe level argument and that this doesn't warn for is rb_eval_cmd. We may want to consider adding an alternative method that does not take a safe level argument, and warn for rb_eval_cmd.
Diffstat (limited to 'test/win32ole')
-rw-r--r--test/win32ole/test_win32ole.rb49
-rw-r--r--test/win32ole/test_win32ole_event.rb15
2 files changed, 0 insertions, 64 deletions
diff --git a/test/win32ole/test_win32ole.rb b/test/win32ole/test_win32ole.rb
index 7dda36ce96..3941780528 100644
--- a/test/win32ole/test_win32ole.rb
+++ b/test/win32ole/test_win32ole.rb
@@ -176,39 +176,6 @@ if defined?(WIN32OLE)
}
end
- def test_s_new_exc_svr_tainted
- th = Thread.start {
- $SAFE = 1
- svr = "Scripting.Dictionary"
- svr.taint
- Thread.current.report_on_exception = false
- WIN32OLE.new(svr)
- }
- exc = assert_raise(SecurityError) {
- th.join
- }
- assert_match(/insecure object creation - `Scripting.Dictionary'/, exc.message)
- ensure
- $SAFE = 0
- end
-
- def test_s_new_exc_host_tainted
- th = Thread.start {
- $SAFE = 1
- svr = "Scripting.Dictionary"
- host = "localhost"
- host.taint
- Thread.current.report_on_exception = false
- WIN32OLE.new(svr, host)
- }
- exc = assert_raise(SecurityError) {
- th.join
- }
- assert_match(/insecure object creation - `localhost'/, exc.message)
- ensure
- $SAFE = 0
- end
-
def test_s_new_DCOM
rshell = WIN32OLE.new("Shell.Application")
assert_instance_of(WIN32OLE, rshell)
@@ -234,22 +201,6 @@ if defined?(WIN32OLE)
}
end
- def test_s_coonect_exc_tainted
- th = Thread.start {
- $SAFE = 1
- svr = "winmgmts:"
- svr.taint
- Thread.current.report_on_exception = false
- WIN32OLE.connect(svr)
- }
- exc = assert_raise(SecurityError) {
- th.join
- }
- assert_match(/insecure connection - `winmgmts:'/, exc.message)
- ensure
- $SAFE = 0
- end
-
def test_invoke_accept_symbol_hash_key
fso = WIN32OLE.new('Scripting.FileSystemObject')
afolder = fso.getFolder(".")
diff --git a/test/win32ole/test_win32ole_event.rb b/test/win32ole/test_win32ole_event.rb
index d8e162596b..742bff4f7a 100644
--- a/test/win32ole/test_win32ole_event.rb
+++ b/test/win32ole/test_win32ole_event.rb
@@ -401,21 +401,6 @@ if defined?(WIN32OLE_EVENT)
message_loop
assert(h2.ev != "")
end
-
- def test_s_new_exc_tainted
- th = Thread.new {
- $SAFE=1
- str = 'ConnectionEvents'
- str.taint
- WIN32OLE_EVENT.new(@db, str)
- }
- exc = assert_raise(SecurityError) {
- th.join
- }
- assert_match(/insecure event creation - `ConnectionEvents'/, exc.message)
- ensure
- $SAFE = 0
- end
end
end
end