mirror of
https://github.com/github/rails.git
synced 2026-01-09 14:48:08 -05:00
Escape the unit value provided to number_to_currency
Fixes CVE-2013-6415 Previously the values were trusted blindly allowing for potential XSS attacks.
This commit is contained in:
committed by
Aaron Patterson
parent
bee3b7f937
commit
5ed70c591f
@@ -156,7 +156,7 @@ module ActionView
|
||||
|
||||
begin
|
||||
value = number_with_precision(number, options.merge(:raise => true))
|
||||
format.gsub(/%n/, value).gsub(/%u/, unit).html_safe
|
||||
format.gsub(/%n/, ERB::Util.html_escape(value)).gsub(/%u/, ERB::Util.html_escape(unit)).html_safe
|
||||
rescue InvalidNumberError => e
|
||||
if options[:raise]
|
||||
raise
|
||||
|
||||
@@ -43,10 +43,11 @@ class NumberHelperTest < ActionView::TestCase
|
||||
assert_equal("($1,234,567,890.50)", number_to_currency(-1234567890.50, {:negative_format => "(%u%n)"}))
|
||||
assert_equal("$1,234,567,892", number_to_currency(1234567891.50, {:precision => 0}))
|
||||
assert_equal("$1,234,567,890.5", number_to_currency(1234567890.50, {:precision => 1}))
|
||||
assert_equal("£1234567890,50", number_to_currency(1234567890.50, {:unit => "£", :separator => ",", :delimiter => ""}))
|
||||
assert_equal("£1234567890,50", number_to_currency(1234567890.50, {:unit => raw("£"), :separator => ",", :delimiter => ""}))
|
||||
assert_equal("&pound;1234567890,50", number_to_currency(1234567890.50, {:unit => "£", :separator => ",", :delimiter => ""}))
|
||||
assert_equal("$1,234,567,890.50", number_to_currency("1234567890.50"))
|
||||
assert_equal("1,234,567,890.50 Kč", number_to_currency("1234567890.50", {:unit => "Kč", :format => "%n %u"}))
|
||||
assert_equal("1,234,567,890.50 - Kč", number_to_currency("-1234567890.50", {:unit => "Kč", :format => "%n %u", :negative_format => "%n - %u"}))
|
||||
assert_equal("1,234,567,890.50 Kč", number_to_currency("1234567890.50", {:unit => raw("Kč"), :format => "%n %u"}))
|
||||
assert_equal("1,234,567,890.50 - Kč", number_to_currency("-1234567890.50", {:unit => raw("Kč"), :format => "%n %u", :negative_format => "%n - %u"}))
|
||||
end
|
||||
|
||||
def test_number_to_percentage
|
||||
|
||||
Reference in New Issue
Block a user