From 81a940a27fed6bd9f0194986870c500b1e621419 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 19 Jul 2018 16:54:00 -0400 Subject: [PATCH] Clean up ahead of CR. --- Signal.xcodeproj/project.pbxproj | 12 ++++++ .../xcshareddata/xcschemes/Signal.xcscheme | 3 ++ .../src/Contacts/ContactDiscoveryService.m | 40 +++++++------------ 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 9850e6157..ddadf0c38 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -3918,7 +3918,13 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW = YES; + CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES; + CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES; + CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; CLANG_ENABLE_MODULES = YES; + CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER = YES; + CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES; CODE_SIGN_ENTITLEMENTS = Signal/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -3963,6 +3969,7 @@ PRODUCT_NAME = Signal; PROVISIONING_PROFILE = ""; PROVISIONING_PROFILE_SPECIFIER = ""; + RUN_CLANG_STATIC_ANALYZER = YES; SDKROOT = iphoneos; SWIFT_OBJC_BRIDGING_HEADER = "Signal/src/Signal-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -3980,6 +3987,10 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW = NO; + CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES; + CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND = YES; + CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Signal/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -4024,6 +4035,7 @@ PRODUCT_BUNDLE_IDENTIFIER = org.whispersystems.signal; PRODUCT_NAME = Signal; PROVISIONING_PROFILE = ""; + RUN_CLANG_STATIC_ANALYZER = YES; SDKROOT = iphoneos; SWIFT_OBJC_BRIDGING_HEADER = "Signal/src/Signal-Bridging-Header.h"; SWIFT_SWIFT3_OBJC_INFERENCE = Off; diff --git a/Signal.xcodeproj/xcshareddata/xcschemes/Signal.xcscheme b/Signal.xcodeproj/xcshareddata/xcschemes/Signal.xcscheme index 8911e150f..78b9c56c1 100644 --- a/Signal.xcodeproj/xcshareddata/xcschemes/Signal.xcscheme +++ b/Signal.xcodeproj/xcshareddata/xcschemes/Signal.xcscheme @@ -76,6 +76,9 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + enableAddressSanitizer = "YES" + enableASanStackUseAfterReturn = "YES" + enableUBSanitizer = "YES" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/SignalServiceKit/src/Contacts/ContactDiscoveryService.m b/SignalServiceKit/src/Contacts/ContactDiscoveryService.m index d65c76808..2acf7e5d5 100644 --- a/SignalServiceKit/src/Contacts/ContactDiscoveryService.m +++ b/SignalServiceKit/src/Contacts/ContactDiscoveryService.m @@ -234,7 +234,6 @@ NS_ASSUME_NONNULL_BEGIN TSRequest *request = [OWSRequestFactory remoteAttestationAuthRequest]; [[TSNetworkManager sharedManager] makeRequest:request success:^(NSURLSessionDataTask *task, id responseDict) { - DDLogVerbose(@"%@ remote attestation auth success: %@", self.logTag, responseDict); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ RemoteAttestationAuth *_Nullable auth = [self parseAuthToken:responseDict]; @@ -258,23 +257,15 @@ NS_ASSUME_NONNULL_BEGIN } NSDictionary *responseDict = response; - NSString *_Nullable token = responseDict[@"token"]; - if (![token isKindOfClass:[NSString class]]) { - OWSProdLogAndFail(@"%@ missing or invalid token.", self.logTag); - return nil; - } + NSString *_Nullable token = [responseDict stringForKey:@"token"]; if (token.length < 1) { - OWSProdLogAndFail(@"%@ empty token.", self.logTag); + OWSProdLogAndFail(@"%@ missing or empty token.", self.logTag); return nil; } - NSString *_Nullable username = responseDict[@"username"]; - if (![username isKindOfClass:[NSString class]]) { - OWSProdLogAndFail(@"%@ missing or invalid username.", self.logTag); - return nil; - } + NSString *_Nullable username = [responseDict stringForKey:@"username"]; if (username.length < 1) { - OWSProdLogAndFail(@"%@ empty username.", self.logTag); + OWSProdLogAndFail(@"%@ missing or empty username.", self.logTag); return nil; } @@ -297,8 +288,6 @@ NS_ASSUME_NONNULL_BEGIN authToken:auth.authToken]; [[TSNetworkManager sharedManager] makeRequest:request success:^(NSURLSessionDataTask *task, id responseJson) { - DDLogVerbose(@"%@ remote attestation success.", self.logTag); - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // TODO: Handle result. [self parseAttestationResponseJson:responseJson @@ -329,8 +318,8 @@ NS_ASSUME_NONNULL_BEGIN } NSDictionary *responseHeaders = ((NSHTTPURLResponse *)response).allHeaderFields; - NSString *_Nullable cookie = responseHeaders[@"Set-Cookie"]; - if (![cookie isKindOfClass:[NSString class]]) { + NSString *_Nullable cookie = [responseHeaders stringForKey:@"Set-Cookie"]; + if (cookie.length < 1) { OWSProdLogAndFail(@"%@ couldn't parse cookie.", self.logTag); return nil; } @@ -378,7 +367,7 @@ NS_ASSUME_NONNULL_BEGIN OWSProdLogAndFail(@"%@ couldn't parse quote data.", self.logTag); return nil; } - NSString *_Nullable signatureBody = responseDict[@"signatureBody"]; + NSString *_Nullable signatureBody = [responseDict stringForKey:@"signatureBody"]; if (![signatureBody isKindOfClass:[NSString class]]) { OWSProdLogAndFail(@"%@ couldn't parse signatureBody.", self.logTag); return nil; @@ -388,7 +377,7 @@ NS_ASSUME_NONNULL_BEGIN OWSProdLogAndFail(@"%@ couldn't parse signature.", self.logTag); return nil; } - NSString *_Nullable encodedCertificates = responseDict[@"certificates"]; + NSString *_Nullable encodedCertificates = [responseDict stringForKey:@"certificates"]; if (![encodedCertificates isKindOfClass:[NSString class]]) { OWSProdLogAndFail(@"%@ couldn't parse encodedCertificates.", self.logTag); return nil; @@ -434,6 +423,13 @@ NS_ASSUME_NONNULL_BEGIN return nil; } + RemoteAttestation *result = [RemoteAttestation new]; + result.cookie = cookie; + result.keys = keys; + result.requestId = requestId; + + DDLogVerbose(@"%@ remote attestation complete.", self.logTag); + //+ RemoteAttestation remoteAttestation = new RemoteAttestation(requestId, keys); //+ List addressBook = new LinkedList<>(); //+ @@ -457,18 +453,12 @@ NS_ASSUME_NONNULL_BEGIN //+ //+ return results; - RemoteAttestation *result = [RemoteAttestation new]; - result.cookie = cookie; - result.keys = keys; - result.requestId = requestId; - return result; } - (BOOL)verifyIasSignatureWithCertificates:(NSString *)certificates signatureBody:(NSString *)signatureBody signature:(NSData *)signature - // quote:(CDSQuote *)quote quoteData:(NSData *)quoteData { OWSAssert(certificates.length > 0);