From f9a3c1c8314e78939dd6a30deb8854a7e1a898d8 Mon Sep 17 00:00:00 2001 From: relikd Date: Tue, 12 Feb 2019 22:37:14 +0100 Subject: [PATCH] Search whole range for safe parser detection --- RSXML/RSXMLData.m | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/RSXML/RSXMLData.m b/RSXML/RSXMLData.m index 99e1d72..beaa445 100644 --- a/RSXML/RSXMLData.m +++ b/RSXML/RSXMLData.m @@ -33,7 +33,7 @@ @implementation RSXMLData static const NSUInteger minNumberOfBytesToSearch = 20; -static const NSInteger numberOfCharactersToSearch = 4096; +static const NSUInteger numberOfCharactersToSearch = 4096; - (instancetype)initWithData:(NSData *)data urlString:(NSString *)urlString { self = [super init]; @@ -157,18 +157,14 @@ static const NSInteger numberOfCharactersToSearch = 4096; _parserError = RSXMLMakeError(RSXMLErrorNoSuitableParser); return nil; } - - NSRange rangeToSearch = NSMakeRange(0, numberOfCharactersToSearch); - if (s.length < numberOfCharactersToSearch) { - rangeToSearch.length = s.length; - } - + + NSRange wholeRange = NSMakeRange(0, s.length); for (Class parserClass in [self listOfParserClasses]) { NSArray *tags = [parserClass parserRequireOrderedTags]; NSUInteger oldPos = 0; for (NSString *tag in tags) { - NSUInteger newPos = [s rangeOfString:tag options:NSCaseInsensitiveSearch range:rangeToSearch].location; + NSUInteger newPos = [s rangeOfString:tag options:NSCaseInsensitiveSearch range:wholeRange].location; if (newPos == NSNotFound || newPos < oldPos) { oldPos = NSNotFound; break;