shikashi 0.5.3 → 0.6.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.
Files changed (4) hide show
  1. data/CHANGELOG +2 -0
  2. data/Rakefile +2 -2
  3. data/lib/shikashi/sandbox.rb +19 -5
  4. metadata +7 -7
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ 0.6.0 Added dispose methods to allow freeing resources used by evalhook code
2
+
1
3
  0.5.3 Allowing method_missing calls
2
4
 
3
5
  0.5.2 Fix release (get_source_encoding)
data/Rakefile CHANGED
@@ -6,13 +6,13 @@ require 'rake/testtask'
6
6
 
7
7
  spec = Gem::Specification.new do |s|
8
8
  s.name = 'shikashi'
9
- s.version = '0.5.3'
9
+ s.version = '0.6.0'
10
10
  s.author = 'Dario Seminara'
11
11
  s.email = 'robertodarioseminara@gmail.com'
12
12
  s.platform = Gem::Platform::RUBY
13
13
  s.summary = 'shikashi is a ruby sandbox that permits the execution of "unprivileged" scripts by defining the permitted methods and constants the scripts can invoke with a white list logic'
14
14
  s.homepage = "http://github.com/tario/shikashi"
15
- s.add_dependency "evalhook", ">= 0.5.5"
15
+ s.add_dependency "evalhook", ">= 0.6.0"
16
16
  s.add_dependency "getsource", ">= 0.1.0"
17
17
  s.has_rdoc = true
18
18
  s.extra_rdoc_files = [ 'README' ]
@@ -87,7 +87,8 @@ module Shikashi
87
87
  def initialize
88
88
  @privileges = Hash.new
89
89
  @chain = Hash.new
90
- @hook_handler = EvalhookHandler.new
90
+ @hook_handler_list = Array.new
91
+ @hook_handler = instantiate_evalhook_handler
91
92
  @hook_handler.sandbox = self
92
93
  @base_namespace = create_adhoc_base_namespace
93
94
  @hook_handler.base_namespace = @base_namespace
@@ -132,6 +133,11 @@ module Shikashi
132
133
  raise Shikashi::Timeout::Error
133
134
  end
134
135
  end
136
+
137
+ # Dispose the objects associated with this code package
138
+ def dispose
139
+ @evalhook_packet.dispose
140
+ end
135
141
  end
136
142
 
137
143
  class EvalhookHandler < EvalHook::HookHandler
@@ -381,7 +387,7 @@ module Shikashi
381
387
  hook_handler = nil
382
388
 
383
389
  if base_namespace
384
- hook_handler = EvalhookHandler.new
390
+ hook_handler = instantiate_evalhook_handler
385
391
  hook_handler.base_namespace = base_namespace
386
392
  hook_handler.sandbox = self
387
393
  else
@@ -411,7 +417,7 @@ module Shikashi
411
417
  end
412
418
 
413
419
  def create_hook_handler(*args)
414
- hook_handler = EvalhookHandler.new
420
+ hook_handler = instantiate_evalhook_handler
415
421
  hook_handler.sandbox = self
416
422
  @base_namespace = args.pick(:base_namespace) do create_adhoc_base_namespace end
417
423
  hook_handler.base_namespace = @base_namespace
@@ -424,9 +430,17 @@ module Shikashi
424
430
  hook_handler
425
431
  end
426
432
 
427
-
433
+ def dispose
434
+ @hook_handler_list.each(&:dispose)
435
+ end
428
436
  private
429
437
 
438
+ def instantiate_evalhook_handler
439
+ newhookhandler = EvalhookHandler.new
440
+ @hook_handler_list << newhookhandler
441
+ newhookhandler
442
+ end
443
+
430
444
  def create_adhoc_base_namespace
431
445
  rnd_module_name = "SandboxBasenamespace#{rand(100000000)}"
432
446
 
@@ -457,7 +471,7 @@ private
457
471
  hook_handler = nil
458
472
 
459
473
  if base_namespace
460
- hook_handler = EvalhookHandler.new
474
+ hook_handler = instantiate_evalhook_handler
461
475
  hook_handler.base_namespace = base_namespace
462
476
  hook_handler.sandbox = self
463
477
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shikashi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-14 00:00:00.000000000 Z
12
+ date: 2014-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: evalhook
16
- requirement: &72120880 !ruby/object:Gem::Requirement
16
+ requirement: &80996950 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.5.5
21
+ version: 0.6.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *72120880
24
+ version_requirements: *80996950
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: getsource
27
- requirement: &72120240 !ruby/object:Gem::Requirement
27
+ requirement: &80996420 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 0.1.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *72120240
35
+ version_requirements: *80996420
36
36
  description:
37
37
  email: robertodarioseminara@gmail.com
38
38
  executables: []