Changeset 87221 in webkit
- Timestamp:
- May 24, 2011 3:52:21 PM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 8 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r87213 r87221 1 2011-05-24 Brady Eidson <beidson@apple.com> 2 3 Reviewed by Darin Adler. 4 5 Part of <rdar://problem/9434311> and https://bugs.webkit.org/show_bug.cgi?id=61334 6 Should shim a few SecKeychainItem* methods on SnowLeopard 7 8 Initialize the KeychainItem shim on SnowLeopard: 9 * WebProcess/mac/WebProcessMac.mm: 10 (WebKit::WebProcess::initializeShim): 11 12 On SnowLeopard, shim the 4 SecKeychainItem methods: 13 * WebProcess/mac/WebProcessShim.h: 14 * WebProcess/mac/WebProcessShim.mm: 15 (WebKit::shimSecKeychainItemCopyContent): 16 (WebKit::shimSecKeychainItemCreateFromContent): 17 (WebKit::shimSecKeychainItemModifyContent): 18 (WebKit::shimSecKeychainItemFreeContent): 19 (WebKit::WebKitWebProcessKeychainItemShimInitialize): 20 21 * WebProcess/mac/KeychainItemShimMethods.h: Added. 22 * WebProcess/mac/KeychainItemShimMethods.mm: Added. 23 Manage a set of shim-controlled AttributeList data: 24 (WebKit::shimManagedAttributeLists): 25 (WebKit::freeAttributeListContents): 26 (WebKit::allocateAttributeListContents): 27 28 Manage a set of shim-controlled KeychainItem data: 29 (WebKit::shimManagedKeychainItemContents): 30 (WebKit::allocateKeychainItemContentData): 31 32 Free any shim-controlled AttributeList or KeychainItem data: 33 (WebKit::webFreeAttributeListContentOnMainThread): 34 (WebKit::webFreeAttributeListContent): 35 (WebKit::webFreeKeychainItemContentOnMainThread): 36 (WebKit::webFreeKeychainItemContent): 37 38 Marshall these 3 KeychainItem methods to the UIProcess: 39 (WebKit::webSecKeychainItemCopyContentOnMainThread): 40 (WebKit::webSecKeychainItemCopyContent): 41 (WebKit::webSecKeychainItemCreateFromContentOnMainThread): 42 (WebKit::webSecKeychainItemCreateFromContent): 43 (WebKit::webSecKeychainItemModifyContentOnMainThread): 44 (WebKit::webSecKeychainItemModifyContent): 45 (WebKit::initializeKeychainItemShim): 46 47 Container for an AttributeList entry that knows how to encode/decode: 48 * Shared/mac/KeychainAttribute.cpp: Added. 49 (WebKit::KeychainAttribute::KeychainAttribute): 50 (CoreIPC::encode): 51 (CoreIPC::decode): 52 * Shared/mac/KeychainAttribute.h: Added. 53 54 Container for the relevant arguments to the shimmed methods, to send to the UIProcess: 55 * Shared/mac/SecKeychainItemRequestData.cpp: Added. 56 (WebKit::SecKeychainItemRequestData::SecKeychainItemRequestData): 57 (WebKit::SecKeychainItemRequestData::initializeWithAttributeList): 58 (WebKit::SecKeychainItemRequestData::~SecKeychainItemRequestData): 59 (WebKit::SecKeychainItemRequestData::attributeList): 60 (WebKit::SecKeychainItemRequestData::encode): 61 (WebKit::SecKeychainItemRequestData::decode): 62 * Shared/mac/SecKeychainItemRequestData.h: Added. 63 (WebKit::SecKeychainItemRequestData::keychainItem): 64 (WebKit::SecKeychainItemRequestData::itemClass): 65 (WebKit::SecKeychainItemRequestData::length): 66 (WebKit::SecKeychainItemRequestData::data): 67 68 Container for the possible output from the shimmed methods, to send back to the WebProcess: 69 * Shared/mac/SecKeychainItemResponseData.cpp: Added. 70 (WebKit::SecKeychainItemResponseData::SecKeychainItemResponseData): 71 (WebKit::SecKeychainItemResponseData::encode): 72 (WebKit::SecKeychainItemResponseData::decode): 73 * Shared/mac/SecKeychainItemResponseData.h: Added. 74 (WebKit::SecKeychainItemResponseData::itemClass): 75 (WebKit::SecKeychainItemResponseData::data): 76 (WebKit::SecKeychainItemResponseData::resultCode): 77 (WebKit::SecKeychainItemResponseData::attributes): 78 (WebKit::SecKeychainItemResponseData::keychainItem): 79 80 Actually implement the calls to the SecKeychainItem* methods in the UIProcess: 81 * UIProcess/WebProcessProxy.h: 82 * UIProcess/WebProcessProxy.messages.in: 83 * UIProcess/mac/WebProcessProxyMac.mm: 84 (WebKit::WebProcessProxy::secKeychainItemCopyContent): 85 (WebKit::WebProcessProxy::secKeychainItemCreateFromContent): 86 (WebKit::WebProcessProxy::secKeychainItemModifyContent): 87 88 * WebKit2.xcodeproj/project.pbxproj: Project file stuff 89 * Configurations/Shim.xcconfig: 90 1 91 2011-05-24 Jay Civelli <jcivelli@chromium.org> 2 92 -
trunk/Source/WebKit2/Configurations/Shim.xcconfig
r86678 r87221 25 25 26 26 GCC_DYNAMIC_NO_PIC = NO; 27 HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include;28 27 SKIP_INSTALL = YES; 29 28 -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.h
r86812 r87221 135 135 void secItemUpdate(const SecItemRequestData&, SecItemResponseData&); 136 136 void secItemDelete(const SecItemRequestData&, SecItemResponseData&); 137 void secKeychainItemCopyContent(const SecKeychainItemRequestData&, SecKeychainItemResponseData&); 138 void secKeychainItemCreateFromContent(const SecKeychainItemRequestData&, SecKeychainItemResponseData&); 139 void secKeychainItemModifyContent(const SecKeychainItemRequestData&, SecKeychainItemResponseData&); 137 140 #endif 138 141 -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.messages.in
r86692 r87221 38 38 SecItemUpdate(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result) 39 39 SecItemDelete(WebKit::SecItemRequestData query) -> (WebKit::SecItemResponseData result) 40 41 SecKeychainItemCopyContent(WebKit::SecKeychainItemRequestData query) -> (WebKit::SecKeychainItemResponseData result) 42 SecKeychainItemCreateFromContent(WebKit::SecKeychainItemRequestData query) -> (WebKit::SecKeychainItemResponseData result) 43 SecKeychainItemModifyContent(WebKit::SecKeychainItemRequestData query) -> (WebKit::SecKeychainItemResponseData result) 40 44 #endif 41 45 -
trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm
r86692 r87221 29 29 #import "SecItemRequestData.h" 30 30 #import "SecItemResponseData.h" 31 #import "SecKeychainItemRequestData.h" 32 #import "SecKeychainItemResponseData.h" 31 33 #import <Security/SecItem.h> 32 34 … … 76 78 } 77 79 80 void WebProcessProxy::secKeychainItemCopyContent(const SecKeychainItemRequestData& request, SecKeychainItemResponseData& response) 81 { 82 SecKeychainItemRef item = request.keychainItem(); 83 SecItemClass itemClass; 84 SecKeychainAttributeList* attrList = request.attributeList(); 85 UInt32 length; 86 void* outData; 87 88 OSStatus resultCode = SecKeychainItemCopyContent(item, &itemClass, attrList, &length, &outData); 89 90 RetainPtr<CFDataRef> data(AdoptCF, CFDataCreate(0, static_cast<const UInt8*>(outData), length)); 91 response = SecKeychainItemResponseData(resultCode, itemClass, attrList, data.get()); 92 93 SecKeychainItemFreeContent(attrList, outData); 94 } 95 96 void WebProcessProxy::secKeychainItemCreateFromContent(const SecKeychainItemRequestData& request, SecKeychainItemResponseData& response) 97 { 98 SecKeychainItemRef keychainItem; 99 100 OSStatus resultCode = SecKeychainItemCreateFromContent(request.itemClass(), request.attributeList(), request.length(), request.data(), 0, 0, &keychainItem); 101 102 response = SecKeychainItemResponseData(resultCode, RetainPtr<SecKeychainItemRef>(AdoptCF, keychainItem)); 103 } 104 105 void WebProcessProxy::secKeychainItemModifyContent(const SecKeychainItemRequestData& request, SecKeychainItemResponseData& response) 106 { 107 OSStatus resultCode = SecKeychainItemModifyContent(request.keychainItem(), request.attributeList(), request.length(), request.data()); 108 109 response = resultCode; 110 } 111 78 112 } // namespace WebKit -
trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj
r87153 r87221 299 299 512935E31288D97800A4B695 /* InjectedBundlePageContextMenuClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 512935E11288D97800A4B695 /* InjectedBundlePageContextMenuClient.cpp */; }; 300 300 512935E41288D97800A4B695 /* InjectedBundlePageContextMenuClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 512935E21288D97800A4B695 /* InjectedBundlePageContextMenuClient.h */; }; 301 512DF6D8138C181A00A22FC6 /* KeychainItemShimMethods.h in Headers */ = {isa = PBXBuildFile; fileRef = 512DF6D6138C181A00A22FC6 /* KeychainItemShimMethods.h */; }; 302 512DF6D9138C181A00A22FC6 /* KeychainItemShimMethods.mm in Sources */ = {isa = PBXBuildFile; fileRef = 512DF6D7138C181A00A22FC6 /* KeychainItemShimMethods.mm */; }; 303 512DF6FE138C254600A22FC6 /* SecKeychainItemRequestData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5112CA4713858D4B0030867D /* SecKeychainItemRequestData.cpp */; }; 304 512DF6FF138C254600A22FC6 /* SecKeychainItemRequestData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5112CA4813858D4B0030867D /* SecKeychainItemRequestData.h */; }; 305 512DF700138C254600A22FC6 /* SecKeychainItemResponseData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5112CA4913858D4B0030867D /* SecKeychainItemResponseData.cpp */; }; 306 512DF701138C254600A22FC6 /* SecKeychainItemResponseData.h in Headers */ = {isa = PBXBuildFile; fileRef = 5112CA4A13858D4B0030867D /* SecKeychainItemResponseData.h */; }; 307 512DF70A138C26C700A22FC6 /* KeychainAttribute.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5112CB071385B97B0030867D /* KeychainAttribute.cpp */; }; 308 512DF70B138C26C700A22FC6 /* KeychainAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 5112CB051385B8D90030867D /* KeychainAttribute.h */; }; 301 309 512E34E4130B4D0500ABD19A /* WKApplicationCacheManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A33B3130B308C00F80CB5 /* WKApplicationCacheManager.cpp */; }; 302 310 512E34E5130B4D0500ABD19A /* WKApplicationCacheManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A33B4130B308C00F80CB5 /* WKApplicationCacheManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; … … 1204 1212 5110AE0A133C16CB0072717A /* WKIconDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKIconDatabase.cpp; sourceTree = "<group>"; }; 1205 1213 5110AE0B133C16CB0072717A /* WKIconDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKIconDatabase.h; sourceTree = "<group>"; }; 1214 5112CA4713858D4B0030867D /* SecKeychainItemRequestData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecKeychainItemRequestData.cpp; sourceTree = "<group>"; }; 1215 5112CA4813858D4B0030867D /* SecKeychainItemRequestData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecKeychainItemRequestData.h; sourceTree = "<group>"; }; 1216 5112CA4913858D4B0030867D /* SecKeychainItemResponseData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SecKeychainItemResponseData.cpp; sourceTree = "<group>"; }; 1217 5112CA4A13858D4B0030867D /* SecKeychainItemResponseData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SecKeychainItemResponseData.h; sourceTree = "<group>"; }; 1218 5112CB051385B8D90030867D /* KeychainAttribute.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeychainAttribute.h; sourceTree = "<group>"; }; 1219 5112CB071385B97B0030867D /* KeychainAttribute.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KeychainAttribute.cpp; sourceTree = "<group>"; }; 1206 1220 511B24A4132E095700065A0C /* WebIconDatabaseProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebIconDatabaseProxy.cpp; path = IconDatabase/WebIconDatabaseProxy.cpp; sourceTree = "<group>"; }; 1207 1221 511B24A5132E095700065A0C /* WebIconDatabaseProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebIconDatabaseProxy.h; path = IconDatabase/WebIconDatabaseProxy.h; sourceTree = "<group>"; }; … … 1218 1232 512935E11288D97800A4B695 /* InjectedBundlePageContextMenuClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundlePageContextMenuClient.cpp; sourceTree = "<group>"; }; 1219 1233 512935E21288D97800A4B695 /* InjectedBundlePageContextMenuClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundlePageContextMenuClient.h; sourceTree = "<group>"; }; 1234 512DF6D6138C181A00A22FC6 /* KeychainItemShimMethods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KeychainItemShimMethods.h; sourceTree = "<group>"; }; 1235 512DF6D7138C181A00A22FC6 /* KeychainItemShimMethods.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = KeychainItemShimMethods.mm; sourceTree = "<group>"; }; 1220 1236 512E3520130B550100ABD19A /* WebApplicationCacheManagerProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebApplicationCacheManagerProxy.cpp; sourceTree = "<group>"; }; 1221 1237 512E3521130B550100ABD19A /* WebApplicationCacheManagerProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebApplicationCacheManagerProxy.h; sourceTree = "<group>"; }; … … 2015 2031 E1BB1688132018BA00F49431 /* FullKeyboardAccessWatcher.h */, 2016 2032 E1BB1689132018BA00F49431 /* FullKeyboardAccessWatcher.mm */, 2033 512DF6D6138C181A00A22FC6 /* KeychainItemShimMethods.h */, 2034 512DF6D7138C181A00A22FC6 /* KeychainItemShimMethods.mm */, 2017 2035 511F8A7D138B46FE00A95F44 /* SecItemShimMethods.h */, 2018 2036 511F8A7E138B46FE00A95F44 /* SecItemShimMethods.mm */, … … 2868 2886 1A9639F512F38ECD0078A062 /* CoreAnimationRenderer.h */, 2869 2887 1A9639F612F38ECD0078A062 /* CoreAnimationRenderer.mm */, 2888 5112CB071385B97B0030867D /* KeychainAttribute.cpp */, 2889 5112CB051385B8D90030867D /* KeychainAttribute.h */, 2870 2890 1A92DC1212F8BAB90017AF65 /* LayerTreeContextMac.mm */, 2871 2891 31EA25D0134F78B2005B1452 /* NativeWebMouseEventMac.mm */, … … 2882 2902 51D130511382EAC000351EDD /* SecItemResponseData.cpp */, 2883 2903 51D130521382EAC000351EDD /* SecItemResponseData.h */, 2904 5112CA4713858D4B0030867D /* SecKeychainItemRequestData.cpp */, 2905 5112CA4813858D4B0030867D /* SecKeychainItemRequestData.h */, 2906 5112CA4913858D4B0030867D /* SecKeychainItemResponseData.cpp */, 2907 5112CA4A13858D4B0030867D /* SecKeychainItemResponseData.h */, 2884 2908 1A9636BA12F348490078A062 /* ShareableSurface.cpp */, 2885 2909 1A9636BB12F348490078A062 /* ShareableSurface.h */, … … 3791 3815 511F8A7B138B460900A95F44 /* WebProcessShim.h in Headers */, 3792 3816 511F8A7F138B46FE00A95F44 /* SecItemShimMethods.h in Headers */, 3817 512DF6D8138C181A00A22FC6 /* KeychainItemShimMethods.h in Headers */, 3818 512DF6FF138C254600A22FC6 /* SecKeychainItemRequestData.h in Headers */, 3819 512DF701138C254600A22FC6 /* SecKeychainItemResponseData.h in Headers */, 3820 512DF70B138C26C700A22FC6 /* KeychainAttribute.h in Headers */, 3793 3821 ); 3794 3822 runOnlyForDeploymentPostprocessing = 0; … … 4454 4482 51B15A8413843A3900321AD8 /* EnvironmentUtilities.cpp in Sources */, 4455 4483 511F8A80138B46FE00A95F44 /* SecItemShimMethods.mm in Sources */, 4484 512DF6D9138C181A00A22FC6 /* KeychainItemShimMethods.mm in Sources */, 4485 512DF6FE138C254600A22FC6 /* SecKeychainItemRequestData.cpp in Sources */, 4486 512DF700138C254600A22FC6 /* SecKeychainItemResponseData.cpp in Sources */, 4487 512DF70A138C26C700A22FC6 /* KeychainAttribute.cpp in Sources */, 4456 4488 ); 4457 4489 runOnlyForDeploymentPostprocessing = 0; -
trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm
r87153 r87221 32 32 #import "WebProcessCreationParameters.h" 33 33 #import "WebProcessProxyMessages.h" 34 #import "SecItemShimMethods.h"35 34 #import <WebCore/FileSystem.h> 36 35 #import <WebCore/LocalizedStrings.h> … … 45 44 #import <objc/runtime.h> 46 45 46 #if defined(BUILDING_ON_SNOW_LEOPARD) 47 #import "KeychainItemShimMethods.h" 48 #else 49 #import "SecItemShimMethods.h" 50 #endif 51 47 52 #if ENABLE(WEB_PROCESS_SANDBOX) 48 53 #import <sandbox.h> … … 243 248 void WebProcess::initializeShim() 244 249 { 245 #if !defined(BUILDING_ON_SNOW_LEOPARD) 250 #if defined(BUILDING_ON_SNOW_LEOPARD) 251 initializeKeychainItemShim(); 252 #else 246 253 initializeSecItemShim(); 247 254 #endif -
trunk/Source/WebKit2/WebProcess/mac/WebProcessShim.h
r87153 r87221 23 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 24 */ 25 26 25 #ifndef WebProcessShim_h 27 26 #define WebProcessShim_h 28 27 29 28 namespace WebKit { 30 31 #if !defined(BUILDING_ON_SNOW_LEOPARD)32 29 33 30 struct WebProcessSecItemShimCallbacks { … … 40 37 typedef void (*WebProcessSecItemShimInitializeFunc)(const WebProcessSecItemShimCallbacks& callbacks); 41 38 42 #endif // BUILDING_ON_SNOW_LEOPARD 39 struct WebProcessKeychainItemShimCallbacks { 40 OSStatus (*secKeychainItemCopyContent)(SecKeychainItemRef, SecItemClass*, SecKeychainAttributeList*, UInt32* length, void** outData); 41 OSStatus (*secKeychainItemCreateFromContent)(SecItemClass, SecKeychainAttributeList*, UInt32 length, const void* data, SecKeychainItemRef*); 42 OSStatus (*secKeychainItemModifyContent)(SecKeychainItemRef, const SecKeychainAttributeList*, UInt32 length, const void* data); 43 bool (*freeAttributeListContent)(SecKeychainAttributeList* attrList); 44 bool (*freeKeychainItemContentData)(void* data); 45 }; 43 46 44 } 47 typedef void (*WebProcessKeychainItemShimInitializeFunc)(const WebProcessKeychainItemShimCallbacks& callbacks); 48 49 } // namespace WebKit 45 50 46 51 #endif // WebProcessShim_h -
trunk/Source/WebKit2/WebProcess/mac/WebProcessShim.mm
r87153 r87221 23 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 24 */ 25 26 25 #import "WebProcessShim.h" 27 26 28 27 #import <Security/SecItem.h> 28 #import <wtf/Platform.h> 29 29 30 30 #define DYLD_INTERPOSE(_replacement,_replacee) \ … … 71 71 } 72 72 73 #endif // BUILDING_ON_SNOW_LEOPARD 73 #endif // !defined(BUILDING_ON_SNOW_LEOPARD) 74 75 #if defined(BUILDING_ON_SNOW_LEOPARD) 76 77 extern "C" void WebKitWebProcessKeychainItemShimInitialize(const WebProcessKeychainItemShimCallbacks&); 78 79 static WebProcessKeychainItemShimCallbacks keychainItemShimCallbacks; 80 81 static OSStatus shimSecKeychainItemCopyContent(SecKeychainItemRef item, SecItemClass* itemClass, SecKeychainAttributeList* attrList, UInt32* length, void** outData) 82 { 83 return keychainItemShimCallbacks.secKeychainItemCopyContent(item, itemClass, attrList, length, outData); 84 } 85 86 static OSStatus shimSecKeychainItemCreateFromContent(SecItemClass itemClass, SecKeychainAttributeList* attrList, UInt32 length, const void* data, 87 SecKeychainRef keychainRef, SecAccessRef initialAccess, SecKeychainItemRef *itemRef) 88 { 89 // We don't support shimming SecKeychainItemCreateFromContent with Keychain or Access arguments at this time 90 if (keychainRef || initialAccess) 91 return SecKeychainItemCreateFromContent(itemClass, attrList, length, data, keychainRef, initialAccess, itemRef); 92 return keychainItemShimCallbacks.secKeychainItemCreateFromContent(itemClass, attrList, length, data, itemRef); 93 } 94 95 static OSStatus shimSecKeychainItemModifyContent(SecKeychainItemRef itemRef, const SecKeychainAttributeList* attrList, UInt32 length, const void* data) 96 { 97 return keychainItemShimCallbacks.secKeychainItemModifyContent(itemRef, attrList, length, data); 98 } 99 100 static OSStatus shimSecKeychainItemFreeContent(SecKeychainAttributeList* attrList, void* data) 101 { 102 bool attrListHandled = !attrList || keychainItemShimCallbacks.freeAttributeListContent(attrList); 103 bool keychainItemContentHandled = !data || keychainItemShimCallbacks.freeKeychainItemContentData(data); 104 105 // If both items were handled by the shim handlers, return now. 106 if (attrListHandled && keychainItemContentHandled) 107 return errSecSuccess; 108 109 // Have the native function handle whichever item wasn't already handled. 110 return SecKeychainItemFreeContent(attrListHandled ? attrList : NULL, keychainItemContentHandled ? data : NULL); 111 } 112 113 DYLD_INTERPOSE(shimSecKeychainItemCopyContent, SecKeychainItemCopyContent) 114 DYLD_INTERPOSE(shimSecKeychainItemCreateFromContent, SecKeychainItemCreateFromContent) 115 DYLD_INTERPOSE(shimSecKeychainItemModifyContent, SecKeychainItemModifyContent) 116 DYLD_INTERPOSE(shimSecKeychainItemFreeContent, SecKeychainItemFreeContent) 117 118 __attribute__((visibility("default"))) 119 void WebKitWebProcessKeychainItemShimInitialize(const WebProcessKeychainItemShimCallbacks& callbacks) 120 { 121 keychainItemShimCallbacks = callbacks; 122 } 123 124 #endif // defined(BUILDING_ON_SNOW_LEOPARD) 74 125 75 126 } // namespace WebKit
Note: See TracChangeset
for help on using the changeset viewer.