Changeset 227582 in webkit
- Timestamp:
- Jan 24, 2018 3:30:23 PM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 9 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r227566 r227582 1 2018-01-24 Dan Bernstein <mitz@apple.com> 2 3 Enable library validation on the Web Content service 4 Part 1 of https://bugs.webkit.org/show_bug.cgi?id=172365 5 <rdar://problem/26470661> 6 7 Reviewed by David Kilzer. 8 9 This makes the Web Content process signed with the Library Validation flag in production 10 builds. Because doing so would prevent engineering builds of Apple apps that use an 11 injected bundle from working, this also adds a Development version of the service, which 12 does not enforce Library Validation. The UI process chooses to use the Development service 13 iff it would need to load an injected bundle that is not part of the OS. 14 15 * Configurations/DebugRelease.xcconfig: Disable Library Validation in engineering builds. 16 17 * Configurations/WebContentService.Development.xcconfig: Added. Like the normal service, but 18 only installed when WebKit is installed in the OS, and uses a Development variant. 19 20 * Configurations/WebContentService.xcconfig: For the Development variant, append 21 ".Development" to the product name, which is also the service identifier. Enable Library 22 Validation for the Normal variant of the service when WK_LIBRARY_VALIDATION_ENABLED allows 23 it. 24 25 * UIProcess/Launcher/ProcessLauncher.h: Add nonValidInjectedCodeAllowed member to 26 LaunchOptions, false by default. 27 28 * UIProcess/Launcher/mac/ProcessLauncherMac.mm: 29 (WebKit::serviceName): Use the Development variant if nonValidInjectedCodeAllowed is true. 30 31 * UIProcess/WebProcessProxy.cpp: 32 (WebKit::WebProcessProxy::getLaunchOptions): Initialize nonValidInjectedCodeAllowed using 33 the new shouldAllowNonValidInjectedCode(). 34 (WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Generic implementation 35 that returns false. 36 * UIProcess/WebProcessProxy.h: Declared shouldAllowNonValidInjectedCode. 37 * UIProcess/mac/WebProcessProxyMac.mm: 38 (WebKit::WebProcessProxy::shouldAllowNonValidInjectedCode const): Return true if this is 39 system WebKit with a non-system injected bundle. 40 41 * WebKit.xcodeproj/project.pbxproj: Added new service target. 42 1 43 2018-01-24 Chris Dumez <cdumez@apple.com> 2 44 -
trunk/Source/WebKit/Configurations/DebugRelease.xcconfig
r227156 r227582 48 48 WK_XPC_SERVICE_SUFFIX[sdk=*simulator*] = .Development; 49 49 50 WK_LIBRARY_VALIDATION_ENABLED = NO; 50 51 WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT = NO; 51 52 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG[sdk=macosx*] = YES; -
trunk/Source/WebKit/Configurations/WebContentService.Development.xcconfig
r227581 r227582 1 // Copyright (C) 20 09, 2013-2016Apple Inc. All rights reserved.1 // Copyright (C) 2018 Apple Inc. All rights reserved. 2 2 // 3 3 // Redistribution and use in source and binary forms, with or without … … 22 22 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 23 24 #include " Base.xcconfig"24 #include "WebContentService.xcconfig" 25 25 26 ARCHS = $(ARCHS_STANDARD_32_64_BIT); 26 SKIP_INSTALL = YES; 27 SKIP_INSTALL[sdk=macosx*] = $(WK_RELOCATABLE_FRAMEWORKS); 27 28 28 ONLY_ACTIVE_ARCH = YES; 29 30 TARGET_MAC_OS_X_VERSION_MAJOR = $(MAC_OS_X_VERSION_MAJOR); 31 32 MACOSX_DEPLOYMENT_TARGET = $(MACOSX_DEPLOYMENT_TARGET_$(PLATFORM_NAME)_$(TARGET_MAC_OS_X_VERSION_MAJOR)); 33 MACOSX_DEPLOYMENT_TARGET_macosx_101100 = 10.11; 34 MACOSX_DEPLOYMENT_TARGET_macosx_101200 = 10.12; 35 MACOSX_DEPLOYMENT_TARGET_macosx_101300 = 10.13; 36 MACOSX_DEPLOYMENT_TARGET_macosx_101400 = 10.14; 37 MACOSX_DEPLOYMENT_TARGET_macosx_101500 = 10.15; 38 39 GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 40 DEBUG_INFORMATION_FORMAT = dwarf; 41 42 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK)); 43 SDKROOT_ = macosx; 44 SDKROOT_YES = macosx.internal; 45 46 WK_RELOCATABLE_FRAMEWORKS = YES; 47 WK_XPC_SERVICE_SUFFIX[sdk=macosx*] = .Development; 48 WK_XPC_SERVICE_SUFFIX[sdk=*simulator*] = .Development; 49 50 WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT = NO; 51 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG[sdk=macosx*] = YES; 52 53 WK_CCACHE_DIR = $(SRCROOT)/../../Tools/ccache; 54 #include "../../../Tools/ccache/ccache.xcconfig" 29 WK_XPC_SERVICE_VARIANT = Development; -
trunk/Source/WebKit/Configurations/WebContentService.xcconfig
r226807 r227582 28 28 CODE_SIGN_ENTITLEMENTS[sdk=macosx*] = $(CODE_SIGN_ENTITLEMENTS_OSX_WITH_XPC_DOMAIN_EXTENSION_$(WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT)); 29 29 CODE_SIGN_ENTITLEMENTS_OSX_WITH_XPC_DOMAIN_EXTENSION_YES = Configurations/WebContent-OSX.entitlements; 30 OTHER_CODE_SIGN_FLAGS[sdk=macosx*] = $(WK_ XPC_DOMAIN_EXTENSION_CODE_SIGN_FLAGS);30 OTHER_CODE_SIGN_FLAGS[sdk=macosx*] = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS); 31 31 32 PRODUCT_NAME = com.apple.WebKit.WebContent; 32 PRODUCT_NAME = $(PRODUCT_NAME_$(WK_XPC_SERVICE_VARIANT)); 33 PRODUCT_NAME_ = $(PRODUCT_NAME_Normal); 34 PRODUCT_NAME_Normal = com.apple.WebKit.WebContent; 35 PRODUCT_NAME_Development = com.apple.WebKit.WebContent.Development; 36 33 37 PRODUCT_BUNDLE_IDENTIFIER = $(PRODUCT_NAME); 34 38 INFOPLIST_FILE[sdk=iphone*] = WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-iOS.plist; … … 43 47 WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT_YES = $(WK_RELOCATABLE_FRAMEWORKS); 44 48 49 WK_LIBRARY_VALIDATION_ENABLED = $(WK_LIBRARY_VALIDATION_ENABLED_$(WK_EMPTY_$(WK_LIBRARY_VALIDATION_ENABLED))); 50 WK_LIBRARY_VALIDATION_ENABLED_ = $(WK_LIBRARY_VALIDATION_ENABLED_NO); 51 WK_LIBRARY_VALIDATION_ENABLED_NO = $(WK_LIBRARY_VALIDATION_ENABLED); 52 WK_LIBRARY_VALIDATION_ENABLED_YES = YES; 53 45 54 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG = $(WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_$(WK_EMPTY_$(WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG))); 46 55 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_ = $(WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_NO); … … 48 57 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG_YES = $(USE_STAGING_INSTALL_PATH); 49 58 50 WK_XPC_DOMAIN_EXTENSION_CODE_SIGN_FLAGS = $(WK_XPC_DOMAIN_EXTENSION_CODE_SIGN_FLAGS_$(WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT)); 51 WK_XPC_DOMAIN_EXTENSION_CODE_SIGN_FLAGS_YES = -o library; 59 WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_$(WK_XPC_SERVICE_VARIANT)); 60 WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_ = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_Normal); 61 WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_Normal = $(WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_$(WK_LIBRARY_VALIDATION_ENABLED)); 62 WK_LIBRARY_VALIDATION_CODE_SIGN_FLAGS_YES = -o library; 52 63 53 64 RUNLOOP_TYPE[sdk=macosx*] = NSRunLoop; -
trunk/Source/WebKit/UIProcess/Launcher/ProcessLauncher.h
r226308 r227582 61 61 WebCore::ProcessIdentifier processIdentifier; 62 62 HashMap<String, String> extraInitializationData; 63 bool nonValidInjectedCodeAllowed { false }; 63 64 64 65 #if ENABLE(DEVELOPER_MODE) && (PLATFORM(GTK) || PLATFORM(WPE)) -
trunk/Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm
r226308 r227582 52 52 switch (launchOptions.processType) { 53 53 case ProcessLauncher::ProcessType::Web: 54 return "com.apple.WebKit.WebContent";54 return launchOptions.nonValidInjectedCodeAllowed ? "com.apple.WebKit.WebContent.Development" : "com.apple.WebKit.WebContent"; 55 55 case ProcessLauncher::ProcessType::Network: 56 56 return "com.apple.WebKit.Networking"; -
trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp
r227566 r227582 168 168 launchOptions.extraInitializationData.add(ASCIILiteral("OverrideLanguages"), languageString.toString()); 169 169 } 170 171 launchOptions.nonValidInjectedCodeAllowed = shouldAllowNonValidInjectedCode(); 170 172 } 171 173 … … 611 613 #endif 612 614 615 #if !PLATFORM(MAC) 616 bool WebProcessProxy::shouldAllowNonValidInjectedCode() const 617 { 618 return false; 619 } 620 #endif 621 613 622 void WebProcessProxy::didReceiveMessage(IPC::Connection& connection, IPC::Decoder& decoder) 614 623 { -
trunk/Source/WebKit/UIProcess/WebProcessProxy.h
r227566 r227582 248 248 249 249 bool platformIsBeingDebugged() const; 250 bool shouldAllowNonValidInjectedCode() const; 250 251 251 252 static const HashSet<String>& platformPathsWithAssumedReadAccess(); -
trunk/Source/WebKit/UIProcess/mac/WebProcessProxyMac.mm
r196500 r227582 25 25 26 26 #import "config.h" 27 #import "WebProcessPool.h" 27 28 #import "WebProcessProxy.h" 28 29 … … 38 39 } 39 40 41 bool WebProcessProxy::shouldAllowNonValidInjectedCode() const 42 { 43 static bool isSystemWebKit = [] { 44 #if WK_API_ENABLED 45 NSBundle *webkit2Bundle = [NSBundle bundleForClass:NSClassFromString(@"WKWebView")]; 46 #else 47 NSBundle *webkit2Bundle = [NSBundle bundleForClass:NSClassFromString(@"WKView")]; 48 #endif 49 return [webkit2Bundle.bundlePath hasPrefix:@"/System/"]; 50 }(); 51 52 if (!isSystemWebKit) 53 return false; 54 55 const String& path = m_processPool->configuration().injectedBundlePath(); 56 return !path.isEmpty() && !path.startsWith("/System/"); 57 } 58 40 59 } // namespace WebKit 41 60 -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r227364 r227582 17 17 dependencies = ( 18 18 BCA8D46815BCE0D6009DC1F1 /* PBXTargetDependency */, 19 372EBB492017E6CF00085064 /* PBXTargetDependency */, 19 20 51A60B2E180CCF1700F3BF50 /* PBXTargetDependency */, 20 21 BC77F95616D0459100F8F78A /* PBXTargetDependency */, … … 795 796 372CAF0B1833FD910040AC27 /* WKNSError.h in Headers */ = {isa = PBXBuildFile; fileRef = 372CAF091833FD910040AC27 /* WKNSError.h */; }; 796 797 372CAF0C1833FD910040AC27 /* WKNSError.mm in Sources */ = {isa = PBXBuildFile; fileRef = 372CAF0A1833FD910040AC27 /* WKNSError.mm */; }; 798 372EBB3C2017E64300085064 /* XPCServiceMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC82839616B47EC400A278FE /* XPCServiceMain.mm */; }; 799 372EBB3E2017E64300085064 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC3DE46815A91763008D26FC /* Foundation.framework */; }; 800 372EBB3F2017E64300085064 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* WebKit.framework */; }; 801 372EBB412017E64300085064 /* WebContentProcess.xib in Resources */ = {isa = PBXBuildFile; fileRef = E1D26A4C1759634E0095BFD1 /* WebContentProcess.xib */; }; 797 802 373CEAD5185417AE008C363D /* WKNSData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 373CEAD3185417AE008C363D /* WKNSData.mm */; }; 798 803 373CEAD6185417AE008C363D /* WKNSData.h in Headers */ = {isa = PBXBuildFile; fileRef = 373CEAD4185417AE008C363D /* WKNSData.h */; }; … … 2129 2134 2130 2135 /* Begin PBXContainerItemProxy section */ 2136 372EBB3A2017E64300085064 /* PBXContainerItemProxy */ = { 2137 isa = PBXContainerItemProxy; 2138 containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; 2139 proxyType = 1; 2140 remoteGlobalIDString = 8DC2EF4F0486A6940098B216; 2141 remoteInfo = WebKit; 2142 }; 2143 372EBB482017E6CF00085064 /* PBXContainerItemProxy */ = { 2144 isa = PBXContainerItemProxy; 2145 containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; 2146 proxyType = 1; 2147 remoteGlobalIDString = 372EBB382017E64300085064; 2148 remoteInfo = WebContent.Development; 2149 }; 2131 2150 375E0626191EA8CC004E3CAF /* PBXContainerItemProxy */ = { 2132 2151 isa = PBXContainerItemProxy; … … 3126 3145 372CAF091833FD910040AC27 /* WKNSError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSError.h; sourceTree = "<group>"; }; 3127 3146 372CAF0A1833FD910040AC27 /* WKNSError.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNSError.mm; sourceTree = "<group>"; }; 3147 372EBB462017E64300085064 /* com.apple.WebKit.WebContent.Development.xpc */ = {isa = PBXFileReference; explicitFileType = "wrapper.xpc-service"; includeInIndex = 0; path = com.apple.WebKit.WebContent.Development.xpc; sourceTree = BUILT_PRODUCTS_DIR; }; 3148 372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WebContentService.Development.xcconfig; sourceTree = "<group>"; }; 3128 3149 373CEAD3185417AE008C363D /* WKNSData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKNSData.mm; sourceTree = "<group>"; }; 3129 3150 373CEAD4185417AE008C363D /* WKNSData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNSData.h; sourceTree = "<group>"; }; … … 4615 4636 runOnlyForDeploymentPostprocessing = 0; 4616 4637 }; 4638 372EBB3D2017E64300085064 /* Frameworks */ = { 4639 isa = PBXFrameworksBuildPhase; 4640 buildActionMask = 2147483647; 4641 files = ( 4642 372EBB3E2017E64300085064 /* Foundation.framework in Frameworks */, 4643 372EBB3F2017E64300085064 /* WebKit.framework in Frameworks */, 4644 ); 4645 runOnlyForDeploymentPostprocessing = 0; 4646 }; 4617 4647 510031EE1379CACB00C8DFE4 /* Frameworks */ = { 4618 4648 isa = PBXFrameworksBuildPhase; … … 4701 4731 8DC2EF5B0486A6940098B216 /* WebKit.framework */, 4702 4732 CDC3830617211799008A2FC3 /* WebProcessShim.dylib */, 4733 372EBB462017E64300085064 /* com.apple.WebKit.WebContent.Development.xpc */, 4703 4734 ); 4704 4735 name = Products; … … 4930 4961 37B418EB1C9624F20031E63B /* WebContent-OSX.entitlements */, 4931 4962 BCACC40E16B0B8A800B6E092 /* WebContentService.xcconfig */, 4963 372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */, 4932 4964 BCB86F4B116AAACD00CE20B7 /* WebKit.xcconfig */, 4933 4965 A1EDD2DD1884B9E300BBFE98 /* WebProcessShim.xcconfig */, … … 9571 9603 productType = "com.apple.product-type.library.dynamic"; 9572 9604 }; 9605 372EBB382017E64300085064 /* WebContent.Development */ = { 9606 isa = PBXNativeTarget; 9607 buildConfigurationList = 372EBB422017E64300085064 /* Build configuration list for PBXNativeTarget "WebContent.Development" */; 9608 buildPhases = ( 9609 372EBB3B2017E64300085064 /* Sources */, 9610 372EBB3D2017E64300085064 /* Frameworks */, 9611 372EBB402017E64300085064 /* Resources */, 9612 ); 9613 buildRules = ( 9614 ); 9615 dependencies = ( 9616 372EBB392017E64300085064 /* PBXTargetDependency */, 9617 ); 9618 name = WebContent.Development; 9619 productName = WebKit2Service; 9620 productReference = 372EBB462017E64300085064 /* com.apple.WebKit.WebContent.Development.xpc */; 9621 productType = "com.apple.product-type.xpc-service"; 9622 }; 9573 9623 510031EA1379CACB00C8DFE4 /* SecItemShim */ = { 9574 9624 isa = PBXNativeTarget; … … 9767 9817 CDC382FB17211799008A2FC3 /* WebProcessShim */, 9768 9818 BC3DE46515A91763008D26FC /* WebContent */, 9819 372EBB382017E64300085064 /* WebContent.Development */, 9769 9820 BC8283B016B4BF7700A278FE /* Networking */, 9770 9821 BC8283F816B4FDDE00A278FE /* Plugin.32 */, … … 9777 9828 9778 9829 /* Begin PBXResourcesBuildPhase section */ 9830 372EBB402017E64300085064 /* Resources */ = { 9831 isa = PBXResourcesBuildPhase; 9832 buildActionMask = 2147483647; 9833 files = ( 9834 372EBB412017E64300085064 /* WebContentProcess.xib in Resources */, 9835 ); 9836 runOnlyForDeploymentPostprocessing = 0; 9837 }; 9779 9838 51F7DC45180CC93600212CA3 /* Resources */ = { 9780 9839 isa = PBXResourcesBuildPhase; … … 10070 10129 "$(BUILT_PRODUCTS_DIR)/com.apple.WebKit.Plugin.64.xpc", 10071 10130 "$(BUILT_PRODUCTS_DIR)/$(WK_STORAGE_SERVICE_PRODUCT_NAME).xpc", 10131 "$(BUILT_PRODUCTS_DIR)/com.apple.WebKit.WebContent.Development.xpc", 10072 10132 ); 10073 10133 name = "Copy XPC services for engineering builds"; … … 10078 10138 "$(BUILT_PRODUCTS_DIR)/WebKit.framework/XPCServices/com.apple.WebKit.Plugin.64.xpc", 10079 10139 "$(BUILT_PRODUCTS_DIR)/WebKit.framework/XPCServices/$(WK_STORAGE_SERVICE_PRODUCT_NAME).xpc", 10140 "$(BUILT_PRODUCTS_DIR)/WebKit.framework/XPCServices/com.apple.WebKit.WebContent.Development.xpc", 10080 10141 ); 10081 10142 runOnlyForDeploymentPostprocessing = 0; … … 10105 10166 files = ( 10106 10167 1AC25FC212A48F6000BD2671 /* PluginProcessShim.mm in Sources */, 10168 ); 10169 runOnlyForDeploymentPostprocessing = 0; 10170 }; 10171 372EBB3B2017E64300085064 /* Sources */ = { 10172 isa = PBXSourcesBuildPhase; 10173 buildActionMask = 2147483647; 10174 files = ( 10175 372EBB3C2017E64300085064 /* XPCServiceMain.mm in Sources */, 10107 10176 ); 10108 10177 runOnlyForDeploymentPostprocessing = 0; … … 11124 11193 11125 11194 /* Begin PBXTargetDependency section */ 11195 372EBB392017E64300085064 /* PBXTargetDependency */ = { 11196 isa = PBXTargetDependency; 11197 target = 8DC2EF4F0486A6940098B216 /* WebKit */; 11198 targetProxy = 372EBB3A2017E64300085064 /* PBXContainerItemProxy */; 11199 }; 11200 372EBB492017E6CF00085064 /* PBXTargetDependency */ = { 11201 isa = PBXTargetDependency; 11202 target = 372EBB382017E64300085064 /* WebContent.Development */; 11203 targetProxy = 372EBB482017E6CF00085064 /* PBXContainerItemProxy */; 11204 }; 11126 11205 375E0627191EA8CC004E3CAF /* PBXTargetDependency */ = { 11127 11206 isa = PBXTargetDependency; … … 11283 11362 name = Release; 11284 11363 }; 11364 372EBB432017E64300085064 /* Debug */ = { 11365 isa = XCBuildConfiguration; 11366 baseConfigurationReference = 372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */; 11367 buildSettings = { 11368 }; 11369 name = Debug; 11370 }; 11371 372EBB442017E64300085064 /* Release */ = { 11372 isa = XCBuildConfiguration; 11373 baseConfigurationReference = 372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */; 11374 buildSettings = { 11375 }; 11376 name = Release; 11377 }; 11378 372EBB452017E64300085064 /* Production */ = { 11379 isa = XCBuildConfiguration; 11380 baseConfigurationReference = 372EBB4A2017E76000085064 /* WebContentService.Development.xcconfig */; 11381 buildSettings = { 11382 }; 11383 name = Production; 11384 }; 11285 11385 510031F31379CACB00C8DFE4 /* Debug */ = { 11286 11386 isa = XCBuildConfiguration; … … 11555 11655 defaultConfigurationName = Production; 11556 11656 }; 11657 372EBB422017E64300085064 /* Build configuration list for PBXNativeTarget "WebContent.Development" */ = { 11658 isa = XCConfigurationList; 11659 buildConfigurations = ( 11660 372EBB432017E64300085064 /* Debug */, 11661 372EBB442017E64300085064 /* Release */, 11662 372EBB452017E64300085064 /* Production */, 11663 ); 11664 defaultConfigurationIsVisible = 0; 11665 defaultConfigurationName = Production; 11666 }; 11557 11667 510031F21379CACB00C8DFE4 /* Build configuration list for PBXNativeTarget "SecItemShim" */ = { 11558 11668 isa = XCConfigurationList;
Note: See TracChangeset
for help on using the changeset viewer.