active_interaction 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 619e67894f9f8615a17f03d7e863b1c0d73749b4
4
- data.tar.gz: f7fd2386a1d4351566a9be241efe24e2100ff871
3
+ metadata.gz: a9a8019b903bfbeba2211de79394b8b0dbfb4cb7
4
+ data.tar.gz: 296e024fabb906a8e7c384ce24a4cbfbee9399c1
5
5
  SHA512:
6
- metadata.gz: 62453228798557fa2011c5791fa27da4ba5548261462f836a8ea33f3489782a5325dc459c85556ae76d65de22d723bb5b0f00670e076858bb1230dd0a87935be
7
- data.tar.gz: 916bf592062ec8f1d89d1554006c8580c513e80fd2c2722a0a69847497e81153948bfa224aa5329cf34075a78d48fc047c09efd48fe073cce85fbb756b841af7
6
+ metadata.gz: c75830ad9762f759a717a663bfc3e2e1a0f55dcdfcc07499aef6ac3aca60678f309b05a46d69323c338dd4e3fd7f5f6f123bcc486a22c9373dcef2392638d540
7
+ data.tar.gz: 219168712b0e6eb4dcbe9d040b0fcc2efd29349265c0d5b6c243896eb9bd5d3e81df816884fbbe36efc9348e5a7bd1c00cc0031b1f029243225ce9366a6f677f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # [Master][]
2
2
 
3
+ # [1.1.3][] (2014-03-31)
4
+
5
+ - Fix Rubocop errors and pin the version to avoid future issues with new cops
6
+ breaking the build.
7
+ - Fix some denial of service attacks via hash symbolization. (See [#163][] for details)
8
+
3
9
  # [1.1.2][] (2014-03-05)
4
10
 
5
11
  - Don't constantize classes for model filters on initialization. This fixes a
@@ -164,7 +170,8 @@
164
170
 
165
171
  - Initial release.
166
172
 
167
- [master]: https://github.com/orgsync/active_interaction/compare/v1.1.2...master
173
+ [Master]: https://github.com/orgsync/active_interaction/compare/v1.1.3...master
174
+ [1.1.3]: https://github.com/orgsync/active_interaction/compare/v1.1.2...v1.1.3
168
175
  [1.1.2]: https://github.com/orgsync/active_interaction/compare/v1.1.1...v1.1.2
169
176
  [1.1.1]: https://github.com/orgsync/active_interaction/compare/v1.1.0...v1.1.1
170
177
  [1.1.0]: https://github.com/orgsync/active_interaction/compare/v1.0.5...v1.1.0
@@ -193,3 +200,5 @@
193
200
  [0.1.2]: https://github.com/orgsync/active_interaction/compare/v0.1.1...v0.1.2
194
201
  [0.1.1]: https://github.com/orgsync/active_interaction/compare/v0.1.0...v0.1.1
195
202
  [0.1.0]: https://github.com/orgsync/active_interaction/compare/62f999b...v0.1.0
203
+
204
+ [#163]: https://github.com/orgsync/active_interaction/pull/163
data/README.md CHANGED
@@ -168,7 +168,7 @@ end
168
168
  boolean :smoking
169
169
  boolean :view
170
170
  end
171
- date :arrives_on, default: -> { Date.today }
171
+ date :arrives_on, default: -> { Date.current }
172
172
  date :departs_on, default: -> { Date.tomorrow }
173
173
  ```
174
174
 
@@ -41,5 +41,5 @@ I18n.load_path << File.expand_path(
41
41
  #
42
42
  # @since 1.0.0
43
43
  #
44
- # @version 1.1.2
44
+ # @version 1.1.3
45
45
  module ActiveInteraction end
@@ -41,7 +41,7 @@ module ActiveInteraction
41
41
  #
42
42
  # @return [Boolean]
43
43
  def respond_to_missing?(slug, *)
44
- !!filter(slug)
44
+ filter(slug)
45
45
  end
46
46
  end
47
47
  end
@@ -8,7 +8,11 @@ module ActiveInteraction
8
8
  #
9
9
  # @!macro filter_method_params
10
10
  # @param block [Proc] filter methods to apply for select keys
11
- # @option options [Boolean] :strip (true) strip unknown keys
11
+ # @option options [Boolean] :strip (true) strip unknown keys (Note: All
12
+ # keys are symbolized. Ruby does not GC symbols so this can cause
13
+ # memory bloat. Setting this option to `false` and passing in non-safe
14
+ # input (e.g. Rails `params`) opens your software to a denial of
15
+ # service attack.)
12
16
  #
13
17
  # @example
14
18
  # hash :order
@@ -26,10 +30,11 @@ module ActiveInteraction
26
30
  def cast(value)
27
31
  case value
28
32
  when Hash
29
- value = value.symbolize_keys
33
+ value = value.stringify_keys
30
34
  filters.each_with_object(strip? ? {} : value) do |(name, filter), h|
35
+ name = name.to_s
31
36
  h[name] = filter.clean(value[name])
32
- end
37
+ end.symbolize_keys
33
38
  else
34
39
  super
35
40
  end
@@ -5,5 +5,5 @@ module ActiveInteraction
5
5
  # The version number.
6
6
  #
7
7
  # @return [Gem::Version]
8
- VERSION = Gem::Version.new('1.1.2')
8
+ VERSION = Gem::Version.new('1.1.3')
9
9
  end
@@ -132,11 +132,21 @@ describe ActiveInteraction::Errors do
132
132
 
133
133
  context 'with an interpolated symbolic error' do
134
134
  before do
135
- I18n.backend.store_translations('en', activemodel: {
136
- errors: { models: { klass.name => { attributes: { attribute: {
137
- invalid_type: 'is not a valid %{type}'
138
- } } } } }
139
- })
135
+ I18n.backend.store_translations('en',
136
+ activemodel: {
137
+ errors: {
138
+ models: {
139
+ klass.name => {
140
+ attributes: {
141
+ attribute: {
142
+ invalid_type: 'is not a valid %{type}'
143
+ }
144
+ }
145
+ }
146
+ }
147
+ }
148
+ }
149
+ )
140
150
 
141
151
  other.add_sym(:attribute, :invalid_type, type: nil)
142
152
  end
@@ -2,7 +2,9 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- class ActiveInteraction::TestFilter < ActiveInteraction::Filter; end
5
+ module ActiveInteraction
6
+ class TestFilter < ActiveInteraction::Filter; end
7
+ end
6
8
  class TestFilter < ActiveInteraction::Filter; end
7
9
 
8
10
  describe ActiveInteraction::Filter, :filter do
@@ -72,14 +72,18 @@ describe I18nInteraction do
72
72
  include_examples 'translation'
73
73
 
74
74
  before do
75
- I18n.backend.store_translations('hsilgne', active_interaction: {
76
- errors: { messages: {
77
- invalid: 'is invalid'.reverse,
78
- invalid_type: "%{type} #{'is not a valid'.reverse}",
79
- missing: 'missing'.reverse
80
- } },
81
- types: TYPES.each_with_object({}) { |e, a| a[e] = e.reverse }
82
- })
75
+ I18n.backend.store_translations('hsilgne',
76
+ active_interaction: {
77
+ errors: {
78
+ messages: {
79
+ invalid: 'is invalid'.reverse,
80
+ invalid_type: "%{type} #{'is not a valid'.reverse}",
81
+ missing: 'missing'.reverse
82
+ }
83
+ },
84
+ types: TYPES.each_with_object({}) { |e, a| a[e] = e.reverse }
85
+ }
86
+ )
83
87
 
84
88
  I18n.locale = 'hsilgne'
85
89
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_interaction
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Lasseigne
@@ -9,124 +9,138 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-03-05 00:00:00.000000000 Z
12
+ date: 2014-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '3'
21
- - - "<"
21
+ - - <
22
22
  - !ruby/object:Gem::Version
23
23
  version: '5'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - ">="
28
+ - - '>='
29
29
  - !ruby/object:Gem::Version
30
30
  version: '3'
31
- - - "<"
31
+ - - <
32
32
  - !ruby/object:Gem::Version
33
33
  version: '5'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: bundler
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.5'
41
41
  type: :development
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.5'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: coveralls
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.7'
55
55
  type: :development
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.7'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: guard-rspec
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '4.2'
69
69
  type: :development
70
70
  prerelease: false
71
71
  version_requirements: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '4.2'
76
+ - !ruby/object:Gem::Dependency
77
+ name: guard-rubocop
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
76
90
  - !ruby/object:Gem::Dependency
77
91
  name: rake
78
92
  requirement: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ~>
81
95
  - !ruby/object:Gem::Version
82
96
  version: '10.1'
83
97
  type: :development
84
98
  prerelease: false
85
99
  version_requirements: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - "~>"
101
+ - - ~>
88
102
  - !ruby/object:Gem::Version
89
103
  version: '10.1'
90
104
  - !ruby/object:Gem::Dependency
91
105
  name: rdoc
92
106
  requirement: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - "~>"
108
+ - - ~>
95
109
  - !ruby/object:Gem::Version
96
110
  version: '4.1'
97
111
  type: :development
98
112
  prerelease: false
99
113
  version_requirements: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - "~>"
115
+ - - ~>
102
116
  - !ruby/object:Gem::Version
103
117
  version: '4.1'
104
118
  - !ruby/object:Gem::Dependency
105
- name: guard-rubocop
119
+ name: rubocop
106
120
  requirement: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - "~>"
122
+ - - '='
109
123
  - !ruby/object:Gem::Version
110
- version: '1.0'
124
+ version: 0.19.1
111
125
  type: :development
112
126
  prerelease: false
113
127
  version_requirements: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - "~>"
129
+ - - '='
116
130
  - !ruby/object:Gem::Version
117
- version: '1.0'
131
+ version: 0.19.1
118
132
  - !ruby/object:Gem::Dependency
119
133
  name: yard
120
134
  requirement: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - "~>"
136
+ - - ~>
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0.8'
125
139
  type: :development
126
140
  prerelease: false
127
141
  version_requirements: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - "~>"
143
+ - - ~>
130
144
  - !ruby/object:Gem::Version
131
145
  version: '0.8'
132
146
  description: Manage application specific business logic.
@@ -216,17 +230,17 @@ require_paths:
216
230
  - lib
217
231
  required_ruby_version: !ruby/object:Gem::Requirement
218
232
  requirements:
219
- - - ">="
233
+ - - '>='
220
234
  - !ruby/object:Gem::Version
221
235
  version: 1.9.3
222
236
  required_rubygems_version: !ruby/object:Gem::Requirement
223
237
  requirements:
224
- - - ">="
238
+ - - '>='
225
239
  - !ruby/object:Gem::Version
226
240
  version: '0'
227
241
  requirements: []
228
242
  rubyforge_project:
229
- rubygems_version: 2.2.2
243
+ rubygems_version: 2.2.0
230
244
  signing_key:
231
245
  specification_version: 4
232
246
  summary: Manage application specific business logic.