summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVajrasky Kok <sky.kok@speaklikeaking.com>2014-01-04 12:57:50 +0800
committerTim Graham <timograham@gmail.com>2014-02-06 04:02:09 -0500
commitc43c469a2e4633361f5dccf7dc7ce37054008d18 (patch)
treedc7f42947f01dc290c1747a771ed2eddf8801c16
parentb17c75564f2f8a4a4ff63be649e7c9902c42cbf7 (diff)
Fixed #21731 -- Made javascript_quote escapes '</'.
-rw-r--r--django/utils/text.py1
-rw-r--r--tests/utils_tests/test_text.py11
2 files changed, 12 insertions, 0 deletions
diff --git a/django/utils/text.py b/django/utils/text.py
index f52050cccc..c2da31a554 100644
--- a/django/utils/text.py
+++ b/django/utils/text.py
@@ -327,6 +327,7 @@ def javascript_quote(s, quote_double_quotes=False):
s = s.replace('\n', '\\n')
s = s.replace('\t', '\\t')
s = s.replace("'", "\\'")
+ s = s.replace('</', '<\\/')
if quote_double_quotes:
s = s.replace('"', '&quot;')
return str(ustring_re.sub(fix, s))
diff --git a/tests/utils_tests/test_text.py b/tests/utils_tests/test_text.py
index 86fe8c38ad..bf547b62d2 100644
--- a/tests/utils_tests/test_text.py
+++ b/tests/utils_tests/test_text.py
@@ -144,3 +144,14 @@ class TestUtilsText(SimpleTestCase):
def test_get_valid_filename(self):
filename = "^&'@{}[],$=!-#()%+~_123.txt"
self.assertEqual(text.get_valid_filename(filename), "-_123.txt")
+
+ def test_javascript_quote(self):
+ input = "<script>alert('Hello \\xff.\n Welcome\there\r');</script>"
+ output = r"<script>alert(\'Hello \\xff.\n Welcome\there\r\');<\/script>"
+ self.assertEqual(text.javascript_quote(input), output)
+
+ # Exercising quote_double_quotes keyword argument
+ input = '"Text"'
+ self.assertEqual(text.javascript_quote(input), '"Text"')
+ self.assertEqual(text.javascript_quote(input, quote_double_quotes=True),
+ '&quot;Text&quot;')