Bug Tracker

Opened 13 years ago

Closed 13 years ago

Last modified 12 years ago

#8034 closed bug (invalid)

parseJSON() fails when special characters are passed in

Reported by: ievolve Owned by: Rick Waldron
Priority: low Milestone: 1.next
Component: core Version: 1.4.2
Keywords: Cc:
Blocked by: Blocking:


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" http://pastie.org/1485459

Change History (4)

comment:1 Changed 13 years ago by ievolve

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

Last edited 13 years ago by ievolve (previous) (diff)

comment:2 Changed 13 years ago by Rick Waldron

Component: unfiledcore
Owner: set to Rick Waldron
Status: newassigned

comment:3 Changed 13 years ago by Rick Waldron

We can test for these...


comment:4 Changed 13 years ago by jitter

Priority: undecidedlow
Resolution: invalid
Status: assignedclosed

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.

Note: See TracTickets for help on using tickets.