From 033b9219035a5ac0e9347753ba28c5dcfd977bee Mon Sep 17 00:00:00 2001 From: Richard Frith-Macdonald Date: Tue, 6 Feb 2018 18:05:28 +0000 Subject: [PATCH] improve error checking --- ChangeLog | 1 + Source/NSPredicate.m | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9673f85ed..236c76be0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,7 @@ * Source/NSPropertyList.m: check step before use * Source/NSDate.m: add comment that we are ignoring non-digits * Source/NSCache.m: use double division for calcualting averrage + * Source/NSPredicate.m: check for termination of quoted strings 2018-02-05 Richard Frith-Macdonald diff --git a/Source/NSPredicate.m b/Source/NSPredicate.m index e9d56fdb2..3a13ded6d 100644 --- a/Source/NSPredicate.m +++ b/Source/NSPredicate.m @@ -2404,7 +2404,11 @@ GSICUStringMatchesRegex(NSString *string, NSString *regex, NSStringCompareOption format: @"Invalid double quoted literal at %u", location]; } [self setCharactersToBeSkipped: skip]; - [self scanString: @"\"" intoString: NULL]; + if (NO == [self scanString: @"\"" intoString: NULL]) + { + [NSException raise: NSInvalidArgumentException + format: @"Unterminated double quoted literal at %u", location]; + } return [NSExpression expressionForConstantValue: str]; } @@ -2421,7 +2425,11 @@ GSICUStringMatchesRegex(NSString *string, NSString *regex, NSStringCompareOption format: @"Invalid single quoted literal at %u", location]; } [self setCharactersToBeSkipped: skip]; - [self scanString: @"'" intoString: NULL]; + if (NO == [self scanString: @"'" intoString: NULL]) + { + [NSException raise: NSInvalidArgumentException + format: @"Unterminated single quoted literal at %u", location]; + } return [NSExpression expressionForConstantValue: str]; }