aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2015-06-16 04:25:02 +0930
committerMatthew Draper <matthew@trebex.net>2015-06-16 04:25:02 +0930
commitc5152dd8031a5c2010b74a5388a8044fa6ef150c (patch)
tree083341f97f7e000723ac89838aecea5397592881 /activesupport
parentfeff9595fb1d79885ffc36d8b1a0f16d277de5a9 (diff)
parent4092f997f0c54564fea9ce68c2cf14d81c65ce87 (diff)
downloadrails-c5152dd8031a5c2010b74a5388a8044fa6ef150c.tar.gz
rails-c5152dd8031a5c2010b74a5388a8044fa6ef150c.tar.bz2
rails-c5152dd8031a5c2010b74a5388a8044fa6ef150c.zip
Merge pull request #20440 from repinel/fix-message-verifier-encoding-issue
Fix the message verifier encoding issue
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/message_verifier.rb2
-rw-r--r--activesupport/test/message_verifier_test.rb1
2 files changed, 2 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/message_verifier.rb b/activesupport/lib/active_support/message_verifier.rb
index eee9bbaead..b2a4404968 100644
--- a/activesupport/lib/active_support/message_verifier.rb
+++ b/activesupport/lib/active_support/message_verifier.rb
@@ -44,7 +44,7 @@ module ActiveSupport
# tampered_message = signed_message.chop # editing the message invalidates the signature
# verifier.valid_message?(tampered_message) # => false
def valid_message?(signed_message)
- return if signed_message.blank?
+ return if signed_message.nil? || !signed_message.valid_encoding? || signed_message.blank?
data, digest = signed_message.split("--")
data.present? && digest.present? && ActiveSupport::SecurityUtils.secure_compare(digest, generate_digest(data))
diff --git a/activesupport/test/message_verifier_test.rb b/activesupport/test/message_verifier_test.rb
index 6c3519df9a..668d78492e 100644
--- a/activesupport/test/message_verifier_test.rb
+++ b/activesupport/test/message_verifier_test.rb
@@ -24,6 +24,7 @@ class MessageVerifierTest < ActiveSupport::TestCase
data, hash = @verifier.generate(@data).split("--")
assert !@verifier.valid_message?(nil)
assert !@verifier.valid_message?("")
+ assert !@verifier.valid_message?("\xff") # invalid encoding
assert !@verifier.valid_message?("#{data.reverse}--#{hash}")
assert !@verifier.valid_message?("#{data}--#{hash.reverse}")
assert !@verifier.valid_message?("purejunk")