bug-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] NSJSONSerialization: Fix string parsing


From: Abbas Raza
Subject: [PATCH] NSJSONSerialization: Fix string parsing
Date: Mon, 29 Aug 2016 19:51:44 +1000

When an invalid string is passed to JSONObjectWithData like this

NSError * NSJSONError = nil;
NSString * json_string = [NSString stringWithFormat:@"\"key1"];
NSDictionary * json_object = [NSJSONSerialization JSONObjectWithData:[json_string dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&NSJSONError];

OR like this

NSError * NSJSONError = nil;
NSString * json_string = [NSString stringWithFormat:@"{\"key1"];
NSDictionary * json_object = [NSJSONSerialization JSONObjectWithData:[json_string dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&NSJSONError];

An exception as below is raised

Uncaught exception NSRangeException, reason: in getCharacters:range:, range { 6, 64 } extends beyond size (5)

This happens because the string is starting with double quotes " but not ending with double quotes " and we reach
end of data. So if string is invalid the program should not generate the exception. Instead it should set error to
JSON Parse error. This patch fixes the issue.

Signed-off-by: Abbas Raza <abbas.raza.1707@gmail.com>
---
 Source/NSJSONSerialization.m | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Source/NSJSONSerialization.m b/Source/NSJSONSerialization.m
index 191546a..f3c925e 100644
--- a/Source/NSJSONSerialization.m
+++ b/Source/NSJSONSerialization.m
@@ -409,6 +409,13 @@ parseString(ParserState *state)
       next = consumeChar(state);
     }

+  if (currentChar(state) != '"')
+  {
+         [val release];
+         parseError(state);
+         return nil;
+  }
+
   if (bufferIndex > 0)
     {
       NSMutableString *str;
--
2.6.4 (Apple Git-63)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]