Side navigation
#8034 closed bug (invalid)
Opened January 21, 2011 09:12PM UTC
Closed January 21, 2011 10:29PM UTC
Last modified March 10, 2012 06:43AM UTC
parseJSON() fails when special characters are passed in
Reported by: | ievolve | Owned by: | rwaldron |
---|---|---|---|
Priority: | low | Milestone: | 1.next |
Component: | core | Version: | 1.4.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
I came across a situation where some oddly encoded characters cause the JSON parser to bomb. In my case it was the cancel character (0x18) that a user had submitted.
Worth noting that JSON parse that is at the link below will parse things just fine. Where JSON.parse() bombs just like the jQuery method.
https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
Code that contains the cancel character can be copied and pasted from here to relicate the issue. The bad character sits between the n and the s in the word "brains"
Attachments (0)
Change History (4)
Changed January 21, 2011 09:19PM UTC by comment:1
_comment0: | To see this bug in action see the example here: http://jsfiddle.net/eBEeC/ → 1295644795910218 |
---|
Changed January 21, 2011 09:20PM UTC by comment:2
component: | unfiled → core |
---|---|
owner: | → rwaldron |
status: | new → assigned |
Confirmed
Changed January 21, 2011 10:06PM UTC by comment:3
We can test for these...
Changed January 21, 2011 10:29PM UTC by comment:4
priority: | undecided → low |
---|---|
resolution: | → invalid |
status: | assigned → closed |
This isn't a bug, the JSON specification is clear about which characters need to be escaped in valid json.
2.5. Strings\\\\ [...]\\\\ All Unicode characters may be placed within the quotation marks except for the characters that must be escaped: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F).
As U+0018 lies in this range, throwing an exception is the specified behavior of jQuery.parseJSON.
Running your sample json through the JSON validator also reveals that this is invalid json.
To see this bug in action see the example here: http://jsfiddle.net/eBEeC/
Should note that the bug also occurs in 1.4.4 as well