| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/common/mac/cfbundle_blocker.h" | 5 #include "chrome/common/mac/cfbundle_blocker.h" |
| 6 | 6 |
| 7 #include <CoreFoundation/CoreFoundation.h> | 7 #include <CoreFoundation/CoreFoundation.h> |
| 8 #import <Foundation/Foundation.h> | 8 #import <Foundation/Foundation.h> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/mac/mac_util.h" | 11 #include "base/mac/mac_util.h" |
| 12 #include "base/mac/scoped_cftyperef.h" | 12 #include "base/mac/scoped_cftyperef.h" |
| 13 #include "base/mac/scoped_nsautorelease_pool.h" | 13 #include "base/mac/scoped_nsautorelease_pool.h" |
| 14 #import "base/memory/scoped_nsobject.h" | 14 #import "base/mac/scoped_nsobject.h" |
| 15 #include "base/strings/sys_string_conversions.h" | 15 #include "base/strings/sys_string_conversions.h" |
| 16 #include "third_party/mach_override/mach_override.h" | 16 #include "third_party/mach_override/mach_override.h" |
| 17 | 17 |
| 18 extern "C" { | 18 extern "C" { |
| 19 | 19 |
| 20 // _CFBundleLoadExecutableAndReturnError is the internal implementation that | 20 // _CFBundleLoadExecutableAndReturnError is the internal implementation that |
| 21 // results in a dylib being loaded via dlopen. Both CFBundleLoadExecutable and | 21 // results in a dylib being loaded via dlopen. Both CFBundleLoadExecutable and |
| 22 // CFBundleLoadExecutableAndReturnError are funneled into this routine. Other | 22 // CFBundleLoadExecutableAndReturnError are funneled into this routine. Other |
| 23 // CFBundle functions may also call directly into here, perhaps due to | 23 // CFBundle functions may also call directly into here, perhaps due to |
| 24 // inlining their calls to CFBundleLoadExecutable. | 24 // inlining their calls to CFBundleLoadExecutable. |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 g_original_underscore_cfbundle_load_executable_and_return_error; | 150 g_original_underscore_cfbundle_load_executable_and_return_error; |
| 151 | 151 |
| 152 Boolean ChromeCFBundleLoadExecutableAndReturnError(CFBundleRef bundle, | 152 Boolean ChromeCFBundleLoadExecutableAndReturnError(CFBundleRef bundle, |
| 153 Boolean force_global, | 153 Boolean force_global, |
| 154 CFErrorRef* error) { | 154 CFErrorRef* error) { |
| 155 base::mac::ScopedNSAutoreleasePool autorelease_pool; | 155 base::mac::ScopedNSAutoreleasePool autorelease_pool; |
| 156 | 156 |
| 157 DCHECK(g_original_underscore_cfbundle_load_executable_and_return_error); | 157 DCHECK(g_original_underscore_cfbundle_load_executable_and_return_error); |
| 158 | 158 |
| 159 base::ScopedCFTypeRef<CFURLRef> url_cf(CFBundleCopyBundleURL(bundle)); | 159 base::ScopedCFTypeRef<CFURLRef> url_cf(CFBundleCopyBundleURL(bundle)); |
| 160 scoped_nsobject<NSString> path(base::mac::CFToNSCast( | 160 base::scoped_nsobject<NSString> path(base::mac::CFToNSCast( |
| 161 CFURLCopyFileSystemPath(url_cf, kCFURLPOSIXPathStyle))); | 161 CFURLCopyFileSystemPath(url_cf, kCFURLPOSIXPathStyle))); |
| 162 | 162 |
| 163 NSString* bundle_id = base::mac::CFToNSCast(CFBundleGetIdentifier(bundle)); | 163 NSString* bundle_id = base::mac::CFToNSCast(CFBundleGetIdentifier(bundle)); |
| 164 | 164 |
| 165 NSDictionary* bundle_dictionary = | 165 NSDictionary* bundle_dictionary = |
| 166 base::mac::CFToNSCast(CFBundleGetInfoDictionary(bundle)); | 166 base::mac::CFToNSCast(CFBundleGetInfoDictionary(bundle)); |
| 167 NSString* version = [bundle_dictionary objectForKey: | 167 NSString* version = [bundle_dictionary objectForKey: |
| 168 base::mac::CFToNSCast(kCFBundleVersionKey)]; | 168 base::mac::CFToNSCast(kCFBundleVersionKey)]; |
| 169 if (![version isKindOfClass:[NSString class]]) { | 169 if (![version isKindOfClass:[NSString class]]) { |
| 170 // Deal with pranksters. | 170 // Deal with pranksters. |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 } | 323 } |
| 324 } | 324 } |
| 325 | 325 |
| 326 // Nothing matched. | 326 // Nothing matched. |
| 327 return false; | 327 return false; |
| 328 } | 328 } |
| 329 | 329 |
| 330 } // namespace mac | 330 } // namespace mac |
| 331 } // namespace common | 331 } // namespace common |
| 332 } // namespace chrome | 332 } // namespace chrome |
| OLD | NEW |