safe_yaml 0.5.1 → 0.5.2

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.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
+ Gemfile.lock
1
2
  dist/
@@ -8,7 +8,10 @@ module SafeYAML
8
8
  def transform?(value)
9
9
  return false unless MATCHER.match(value)
10
10
  datetime = DateTime.parse(value) rescue nil
11
- return !!datetime, datetime.to_time
11
+ if datetime.respond_to?(:to_time)
12
+ return true, datetime.to_time
13
+ end
14
+ false
12
15
  end
13
16
  end
14
17
  end
@@ -1,3 +1,3 @@
1
1
  module SafeYAML
2
- VERSION = "0.5.1"
2
+ VERSION = "0.5.2"
3
3
  end
data/safe_yaml.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
8
8
  gem.email = "daniel.tao@gmail.com"
9
9
  gem.description = %q{Parse YAML safely, without that pesky arbitrary code execution vulnerability}
10
10
  gem.summary = %q{SameYAML provides an alternative implementation of YAML.load suitable for accepting user input in Ruby applications.}
11
- gem.homepage = "http://github.com/dtao/safe_yaml"
11
+ gem.homepage = "http://dtao.github.com/safe_yaml/"
12
12
 
13
13
  gem.files = `git ls-files`.split($\)
14
14
  gem.test_files = gem.files.grep(%r{^spec/})
@@ -13,9 +13,7 @@ describe YAML do
13
13
  backdoor = YAML.orig_load("--- !ruby/hash:ExploitableBackDoor\nfoo: bar\n")
14
14
  backdoor.should be_exploited_through_setter
15
15
  end
16
- end
17
16
 
18
- if RUBY_VERSION >= "1.9.2"
19
17
  it "allows exploits through objects defined in YAML w/ !ruby/object via the :init_with method" do
20
18
  backdoor = YAML.orig_load("--- !ruby/object:ExploitableBackDoor\nfoo: bar\n")
21
19
  backdoor.should be_exploited_through_init_with
@@ -110,9 +108,7 @@ describe YAML do
110
108
  backdoor = YAML.orig_load_file "spec/exploit.1.9.3.yaml"
111
109
  backdoor.should be_exploited_through_setter
112
110
  end
113
- end
114
111
 
115
- if RUBY_VERSION >= "1.9.2"
116
112
  it "allows exploits through objects defined in YAML w/ !ruby/object via the :init_with method" do
117
113
  backdoor = YAML.orig_load_file "spec/exploit.1.9.2.yaml"
118
114
  backdoor.should be_exploited_through_init_with
data/spec/shared_specs.rb CHANGED
@@ -1,5 +1,3 @@
1
- require File.join(File.dirname(__FILE__), "spec_helper")
2
-
3
1
  module SharedSpecs
4
2
  def self.included(base)
5
3
  base.instance_eval do
@@ -51,11 +49,6 @@ module SharedSpecs
51
49
  result.should == { "date" => Date.parse("2013-01-24") }
52
50
  end
53
51
 
54
- it "translates valid time values" do
55
- parse "time: 2013-01-29 05:58:00 -0800"
56
- result.should == { "time" => Time.new(2013, 1, 29, 5, 58, 0, "-08:00") }
57
- end
58
-
59
52
  it "translates valid true/false values to booleans" do
60
53
  parse <<-YAML
61
54
  - yes
@@ -108,7 +101,6 @@ module SharedSpecs
108
101
  1: integer
109
102
  3.14: float
110
103
  2013-01-24: date
111
- 2013-01-29 05:58:00 -0800: time
112
104
  YAML
113
105
 
114
106
  result.should == {
@@ -117,7 +109,6 @@ module SharedSpecs
117
109
  1 => "integer",
118
110
  3.14 => "float",
119
111
  Date.parse("2013-01-24") => "date",
120
- Time.new(2013, 1, 29, 5, 58, 0, "-08:00") => "time"
121
112
  }
122
113
  end
123
114
 
@@ -128,10 +119,34 @@ module SharedSpecs
128
119
  - 1
129
120
  - 3.14
130
121
  - 2013-01-24
131
- - 2013-01-29 05:58:00 -0800
132
122
  YAML
133
123
 
134
- result.should == ["foo", ":bar", 1, 3.14, Date.parse("2013-01-24"), Time.new(2013, 1, 29, 5, 58, 0, "-08:00")]
124
+ result.should == ["foo", ":bar", 1, 3.14, Date.parse("2013-01-24")]
125
+ end
126
+ end
127
+
128
+ context "for Ruby version #{RUBY_VERSION}" do
129
+ if RUBY_VERSION >= "1.9.2"
130
+ it "translates valid time values" do
131
+ parse "time: 2013-01-29 05:58:00 -0800"
132
+ result.should == { "time" => Time.new(2013, 1, 29, 5, 58, 0, "-08:00") }
133
+ end
134
+
135
+ it "applies the same transformation to keys" do
136
+ parse "2013-01-29 05:58:00 -0800: time"
137
+ result.should == { Time.new(2013, 1, 29, 5, 58, 0, "-08:00") => "time" }
138
+ end
139
+
140
+ it "applies the same transformation to elements in sequences" do
141
+ parse "- 2013-01-29 05:58:00 -0800"
142
+ result.should == [Time.new(2013, 1, 29, 5, 58, 0, "-08:00")]
143
+ end
144
+
145
+ else
146
+ it "does not deserialize times" do
147
+ parse "time: 2013-01-29 05:58:00 -0800"
148
+ result.should == { "time" => "2013-01-29 05:58:00 -0800" }
149
+ end
135
150
  end
136
151
  end
137
152
 
@@ -145,37 +160,16 @@ module SharedSpecs
145
160
  result.should == { "symbol" => :value }
146
161
  end
147
162
 
148
- it "applies the same transformations to keys as to values" do
149
- parse <<-YAML
150
- foo: string
151
- :bar: symbol
152
- 1: integer
153
- 3.14: float
154
- 2013-01-24: date
155
- 2013-01-29 05:58:00 -0800: time
156
- YAML
163
+ it "applies the same transformation to keys" do
164
+ parse ":bar: symbol"
157
165
 
158
- result.should == {
159
- "foo" => "string",
160
- :bar => "symbol",
161
- 1 => "integer",
162
- 3.14 => "float",
163
- Date.parse("2013-01-24") => "date",
164
- Time.new(2013, 1, 29, 5, 58, 0, "-08:00") => "time"
165
- }
166
+ result.should == { :bar => "symbol" }
166
167
  end
167
168
 
168
- it "applies the same transformations to elements in sequences as to all values" do
169
- parse <<-YAML
170
- - foo
171
- - :bar
172
- - 1
173
- - 3.14
174
- - 2013-01-24
175
- - 2013-01-29 05:58:00 -0800
176
- YAML
169
+ it "applies the same transformation to elements in sequences" do
170
+ parse "- :bar"
177
171
 
178
- result.should == ["foo", :bar, 1, 3.14, Date.parse("2013-01-24"), Time.new(2013, 1, 29, 5, 58, 0, "-08:00")]
172
+ result.should == [:bar]
179
173
  end
180
174
  end
181
175
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe_yaml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -19,7 +19,6 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - .gitignore
21
21
  - Gemfile
22
- - Gemfile.lock
23
22
  - README.md
24
23
  - Rakefile
25
24
  - lib/safe_yaml.rb
@@ -44,7 +43,7 @@ files:
44
43
  - spec/spec_helper.rb
45
44
  - spec/support/exploitable_back_door.rb
46
45
  - spec/syck_resolver_spec.rb
47
- homepage: http://github.com/dtao/safe_yaml
46
+ homepage: http://dtao.github.com/safe_yaml/
48
47
  licenses: []
49
48
  post_install_message:
50
49
  rdoc_options: []
data/Gemfile.lock DELETED
@@ -1,28 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- safe_yaml (0.5.1)
5
-
6
- GEM
7
- remote: http://rubygems.org/
8
- specs:
9
- diff-lcs (1.1.3)
10
- heredoc_unindent (1.1.2)
11
- rake (10.0.3)
12
- rspec (2.12.0)
13
- rspec-core (~> 2.12.0)
14
- rspec-expectations (~> 2.12.0)
15
- rspec-mocks (~> 2.12.0)
16
- rspec-core (2.12.2)
17
- rspec-expectations (2.12.1)
18
- diff-lcs (~> 1.1.3)
19
- rspec-mocks (2.12.1)
20
-
21
- PLATFORMS
22
- ruby
23
-
24
- DEPENDENCIES
25
- heredoc_unindent
26
- rake
27
- rspec
28
- safe_yaml!