From bbba491b7cbf75104d1efcc72653a8498a935f17 Mon Sep 17 00:00:00 2001 From: Jorge Canizales Date: Wed, 2 Sep 2015 23:05:53 -0700 Subject: [PATCH] Reject non-ASCII text header values too. --- .../GRPCClient/private/GRPCRequestHeaders.m | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/objective-c/GRPCClient/private/GRPCRequestHeaders.m b/src/objective-c/GRPCClient/private/GRPCRequestHeaders.m index 310f1655e49..dfec2a7e7e5 100644 --- a/src/objective-c/GRPCClient/private/GRPCRequestHeaders.m +++ b/src/objective-c/GRPCClient/private/GRPCRequestHeaders.m @@ -39,13 +39,13 @@ #import "NSDictionary+GRPC.h" // Used by the setter. -static void CheckKeyIsValid(NSString* key) { - if (!key) { - [NSException raise:NSInvalidArgumentException format:@"Key cannot be nil"]; +static void CheckIsNonNilASCII(NSString *name, NSString* value) { + if (!value) { + [NSException raise:NSInvalidArgumentException format:@"%@ cannot be nil", name]; } - if (![key canBeConvertedToEncoding:NSASCIIStringEncoding]) { + if (![value canBeConvertedToEncoding:NSASCIIStringEncoding]) { [NSException raise:NSInvalidArgumentException - format:@"Key %@ contains non-ASCII characters", key]; + format:@"%@ %@ contains non-ASCII characters", name, value]; } } @@ -63,6 +63,7 @@ static void CheckKeyValuePairIsValid(NSString *key, id value) { format:@"Expected NSString value for header %@ not ending in \"-bin\", " @"instead got %@", key, value]; } + CheckIsNonNilASCII(@"Text header value", (NSString *)value); } } @@ -92,7 +93,7 @@ static void CheckKeyValuePairIsValid(NSString *key, id value) { - (void)setObject:(id)obj forKeyedSubscript:(NSString *)key { [self checkCallIsNotStarted]; - CheckKeyIsValid(key); + CheckIsNonNilASCII(@"Header name", key); key = key.lowercaseString; CheckKeyValuePairIsValid(key, obj); _delegate[key] = obj;