hoptoad_notifier 2.4.7 → 2.4.8

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,9 @@
1
+ Version 2.4.8 - Mon Mar 21 11:11:16 -0400 2011
2
+ ===============================================================================
3
+
4
+ Jonathan Yurek(1):
5
+ Prevent infinite loops from recursive data structures.
6
+
1
7
  Version 2.4.7 - Thu Mar 10 16:21:31 -0500 2011
2
8
  ===============================================================================
3
9
 
@@ -416,5 +422,6 @@ Nick Quaranto (3):
416
422
 
417
423
 
418
424
 
425
+
419
426
 
420
427
 
@@ -226,14 +226,16 @@ module HoptoadNotifier
226
226
  # Removes non-serializable data. Allowed data types are strings, arrays,
227
227
  # and hashes. All other types are converted to strings.
228
228
  # TODO: move this onto Hash
229
- def clean_unserializable_data(data)
229
+ def clean_unserializable_data(data, stack = [])
230
+ return "[possible infinite recursion halted]" if stack.any?{|item| item == data.object_id }
231
+
230
232
  if data.respond_to?(:to_hash)
231
233
  data.to_hash.inject({}) do |result, (key, value)|
232
- result.merge(key => clean_unserializable_data(value))
234
+ result.merge(key => clean_unserializable_data(value, stack + [data.object_id]))
233
235
  end
234
236
  elsif data.respond_to?(:to_ary)
235
237
  data.collect do |value|
236
- clean_unserializable_data(value)
238
+ clean_unserializable_data(value, stack + [data.object_id])
237
239
  end
238
240
  else
239
241
  data.to_s
@@ -1,3 +1,3 @@
1
1
  module HoptoadNotifier
2
- VERSION = "2.4.7".freeze
2
+ VERSION = "2.4.8".freeze
3
3
  end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class RecursionTest < Test::Unit::TestCase
4
+ should "not allow infinite recursion" do
5
+ hash = {:a => :a}
6
+ hash[:hash] = hash
7
+ notice = HoptoadNotifier::Notice.new(:parameters => hash)
8
+ assert_equal "[possible infinite recursion halted]", notice.parameters[:hash]
9
+ end
10
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoptoad_notifier
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 2
8
8
  - 4
9
- - 7
10
- version: 2.4.7
9
+ - 8
10
+ version: 2.4.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - thoughtbot, inc
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-10 00:00:00 -05:00
18
+ date: 2011-03-21 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -170,6 +170,7 @@ files:
170
170
  - test/notifier_test.rb
171
171
  - test/rack_test.rb
172
172
  - test/rails_initializer_test.rb
173
+ - test/recursion_test.rb
173
174
  - test/sender_test.rb
174
175
  - test/user_informer_test.rb
175
176
  - rails/init.rb
@@ -221,5 +222,6 @@ test_files:
221
222
  - test/notifier_test.rb
222
223
  - test/rack_test.rb
223
224
  - test/rails_initializer_test.rb
225
+ - test/recursion_test.rb
224
226
  - test/sender_test.rb
225
227
  - test/user_informer_test.rb