From c9167f2acdd8ab477acb620cdd0bd231c8a0f3d0 Mon Sep 17 00:00:00 2001 From: Thomas Van Lenten Date: Tue, 5 Apr 2016 17:04:36 -0400 Subject: Error during parsing for invalid UTF-8 instead of dropping dropping data. This seems to be some code evolution side effects. Back when there was a custom string class, we couldn't really error when we finally saw the string was bad so we had to return the empty string, but now that full validation is done up front, it can error out. --- objectivec/GPBCodedInputStream.m | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'objectivec/GPBCodedInputStream.m') diff --git a/objectivec/GPBCodedInputStream.m b/objectivec/GPBCodedInputStream.m index eaa28e50..319ec15b 100644 --- a/objectivec/GPBCodedInputStream.m +++ b/objectivec/GPBCodedInputStream.m @@ -219,15 +219,16 @@ NSString *GPBCodedInputStreamReadRetainedString( result = [[NSString alloc] initWithBytes:&state->bytes[state->bufferPos] length:size encoding:NSUTF8StringEncoding]; + state->bufferPos += size; if (!result) { - result = @""; #ifdef DEBUG // https://developers.google.com/protocol-buffers/docs/proto#scalar - NSLog(@"UTF8 failure, is some field type 'string' when it should be " + NSLog(@"UTF-8 failure, is some field type 'string' when it should be " @"'bytes'?"); #endif + [NSException raise:NSParseErrorException + format:@"Invalid UTF-8 for a 'string'"]; } - state->bufferPos += size; } return result; } -- cgit v1.2.3