shikashi 0.5.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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: []