Change JSON serialization error check. - Mac OS symupload used to check for errors in JSON serialization by inspecting the "error" out parameter of the serialization function. Now it checks the returned data for "nil". - Similar change for the HTTP request that's made in the same function. Change-Id: I86f50ef44e60ee119c302e0614b115a8d35e9b5b Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2390753 Reviewed-by: Mark Mentovai <mark@chromium.org>
diff --git a/src/common/mac/SymbolCollectorClient.m b/src/common/mac/SymbolCollectorClient.m index b135cde..5926d2a 100644 --- a/src/common/mac/SymbolCollectorClient.m +++ b/src/common/mac/SymbolCollectorClient.m
@@ -202,32 +202,37 @@ NSDictionary* jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:symbolIdDictionary, @"symbol_id", type, @"symbol_upload_type", nil]; - NSError* error; + NSError* error = nil; NSData* jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:NSJSONWritingPrettyPrinted error:&error]; - if (error) { + if (jsonData == nil) { + fprintf(stdout, "Error: %s\n", [[error localizedDescription] UTF8String]); fprintf(stdout, "Failed to complete upload. Could not write JSON payload.\n"); return CompleteUploadResultError; } + NSString* body = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; - HTTPSimplePostRequest* postRequest = [[HTTPSimplePostRequest alloc] initWithURL:URL]; [postRequest setBody:body]; [postRequest setContentType:@"application/json"]; - error = nil; NSData* data = [postRequest send:&error]; + if (data == nil) { + fprintf(stdout, "Error: %s\n", [[error localizedDescription] UTF8String]); + fprintf(stdout, "Failed to complete upload URL.\n"); + return CompleteUploadResultError; + } + NSString* result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; int responseCode = [[postRequest response] statusCode]; [postRequest release]; - - if (error || responseCode != 200) { + if (responseCode != 200) { fprintf(stdout, "Failed to complete upload URL.\n"); fprintf(stdout, "Response code: %d\n", responseCode); fprintf(stdout, "Response:\n");