From df5433d22c5af9b90b5af529f57a35d2bf936b64 Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Thu, 16 Jul 2015 13:44:42 -0700 Subject: [PATCH] Add third_party/apple_apsl from https://crrev.com/328418 This is needed by //base in order to build on a Mac host and will be useful for doing Mac->Android or Mac->iOS cross-compilation. R=abarth --- third_party/apple_apsl/CFBase.h | 82 +++++++ third_party/apple_apsl/CFRuntime.h | 44 ++++ third_party/apple_apsl/LICENSE | 327 +++++++++++++++++++++++++ third_party/apple_apsl/OWNERS | 2 + third_party/apple_apsl/README.chromium | 61 +++++ third_party/apple_apsl/cssmapplePriv.h | 77 ++++++ third_party/apple_apsl/dnsinfo.h | 114 +++++++++ third_party/apple_apsl/malloc.h | 58 +++++ 8 files changed, 765 insertions(+) create mode 100644 third_party/apple_apsl/CFBase.h create mode 100644 third_party/apple_apsl/CFRuntime.h create mode 100644 third_party/apple_apsl/LICENSE create mode 100644 third_party/apple_apsl/OWNERS create mode 100644 third_party/apple_apsl/README.chromium create mode 100644 third_party/apple_apsl/cssmapplePriv.h create mode 100644 third_party/apple_apsl/dnsinfo.h create mode 100644 third_party/apple_apsl/malloc.h diff --git a/third_party/apple_apsl/CFBase.h b/third_party/apple_apsl/CFBase.h new file mode 100644 index 0000000000000..d74360afcda7f --- /dev/null +++ b/third_party/apple_apsl/CFBase.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2011 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* CFBase.c + Copyright (c) 1998-2011, Apple Inc. All rights reserved. + Responsibility: Christopher Kane +*/ + +#ifndef THIRD_PARTY_APPLE_APSL_CFBASE_H_ +#define THIRD_PARTY_APPLE_APSL_CFBASE_H_ + +#include "CFRuntime.h" + +struct ChromeCFAllocatorLeopards { + ChromeCFRuntimeBase _base; +#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED + size_t (*size)(struct _malloc_zone_t *zone, const void *ptr); /* returns the size of a block or 0 if not in this zone; must be fast, especially for negative answers */ + void *(*malloc)(struct _malloc_zone_t *zone, size_t size); + void *(*calloc)(struct _malloc_zone_t *zone, size_t num_items, size_t size); /* same as malloc, but block returned is set to zero */ + void *(*valloc)(struct _malloc_zone_t *zone, size_t size); /* same as malloc, but block returned is set to zero and is guaranteed to be page aligned */ + void (*free)(struct _malloc_zone_t *zone, void *ptr); + void *(*realloc)(struct _malloc_zone_t *zone, void *ptr, size_t size); + void (*destroy)(struct _malloc_zone_t *zone); /* zone is destroyed and all memory reclaimed */ + const char *zone_name; + unsigned (*batch_malloc)(struct _malloc_zone_t *zone, size_t size, void **results, unsigned num_requested); /* given a size, returns pointers capable of holding that size; returns the number of pointers allocated (maybe 0 or less than num_requested) */ + void (*batch_free)(struct _malloc_zone_t *zone, void **to_be_freed, unsigned num_to_be_freed); /* frees all the pointers in to_be_freed; note that to_be_freed may be overwritten during the process */ + struct malloc_introspection_t *introspect; + void *reserved5; +#endif + CFAllocatorRef _allocator; + CFAllocatorContext _context; +}; + +struct ChromeCFAllocatorLions { + ChromeCFRuntimeBase _base; +#if DEPLOYMENT_TARGET_MACOSX || DEPLOYMENT_TARGET_EMBEDDED + size_t (*size)(struct _malloc_zone_t *zone, const void *ptr); /* returns the size of a block or 0 if not in this zone; must be fast, especially for negative answers */ + void *(*malloc)(struct _malloc_zone_t *zone, size_t size); + void *(*calloc)(struct _malloc_zone_t *zone, size_t num_items, size_t size); /* same as malloc, but block returned is set to zero */ + void *(*valloc)(struct _malloc_zone_t *zone, size_t size); /* same as malloc, but block returned is set to zero and is guaranteed to be page aligned */ + void (*free)(struct _malloc_zone_t *zone, void *ptr); + void *(*realloc)(struct _malloc_zone_t *zone, void *ptr, size_t size); + void (*destroy)(struct _malloc_zone_t *zone); /* zone is destroyed and all memory reclaimed */ + const char *zone_name; + + /* Optional batch callbacks; these may be NULL */ + unsigned (*batch_malloc)(struct _malloc_zone_t *zone, size_t size, void **results, unsigned num_requested); /* given a size, returns pointers capable of holding that size; returns the number of pointers allocated (maybe 0 or less than num_requested) */ + void (*batch_free)(struct _malloc_zone_t *zone, void **to_be_freed, unsigned num_to_be_freed); /* frees all the pointers in to_be_freed; note that to_be_freed may be overwritten during the process */ + + struct malloc_introspection_t *introspect; + unsigned version; + + /* aligned memory allocation. The callback may be NULL. */ + void *(*memalign)(struct _malloc_zone_t *zone, size_t alignment, size_t size); + + /* free a pointer known to be in zone and known to have the given size. The callback may be NULL. */ + void (*free_definite_size)(struct _malloc_zone_t *zone, void *ptr, size_t size); +#endif + CFAllocatorRef _allocator; + CFAllocatorContext _context; +}; + +#endif // THIRD_PARTY_APPLE_APSL_CFBASE_H_ diff --git a/third_party/apple_apsl/CFRuntime.h b/third_party/apple_apsl/CFRuntime.h new file mode 100644 index 0000000000000..69ae991c29e6a --- /dev/null +++ b/third_party/apple_apsl/CFRuntime.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2009 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ +/* CFRuntime.h + Copyright (c) 1999-2009, Apple Inc. All rights reserved. +*/ + +#ifndef THIRD_PARTY_APPLE_APSL_CFRUNTIME_H_ +#define THIRD_PARTY_APPLE_APSL_CFRUNTIME_H_ + +/* All CF "instances" start with this structure. Never refer to + * these fields directly -- they are for CF's use and may be added + * to or removed or change format without warning. Binary + * compatibility for uses of this struct is not guaranteed from + * release to release. + */ +typedef struct __ChromeCFRuntimeBase { + uintptr_t _cfisa; + uint8_t _cfinfo[4]; +#if __LP64__ + uint32_t _rc; +#endif +} ChromeCFRuntimeBase; + +#endif // THIRD_PARTY_APPLE_APSL_CFRUNTIME_H_ diff --git a/third_party/apple_apsl/LICENSE b/third_party/apple_apsl/LICENSE new file mode 100644 index 0000000000000..9fb3c2cee31bc --- /dev/null +++ b/third_party/apple_apsl/LICENSE @@ -0,0 +1,327 @@ +APPLE PUBLIC SOURCE LICENSE Version 2.0 - August 6, 2003 + +Please read this License carefully before downloading this software. By +downloading or using this software, you are agreeing to be bound by the terms of +this License. If you do not or cannot agree to the terms of this License, +please do not download or use the software. + +Apple Note: In January 2007, Apple changed its corporate name from "Apple +Computer, Inc." to "Apple Inc." This change has been reflected below and +copyright years updated, but no other changes have been made to the APSL 2.0. + +1. General; Definitions. This License applies to any program or other work +which Apple Inc. ("Apple") makes publicly available and which contains a notice +placed by Apple identifying such program or work as "Original Code" and stating +that it is subject to the terms of this Apple Public Source License version 2.0 +("License"). As used in this License: + +1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is the +grantor of rights, (i) claims of patents that are now or hereafter acquired, +owned by or assigned to Apple and (ii) that cover subject matter contained in +the Original Code, but only to the extent necessary to use, reproduce and/or +distribute the Original Code without infringement; and (b) in the case where You +are the grantor of rights, (i) claims of patents that are now or hereafter +acquired, owned by or assigned to You and (ii) that cover subject matter in Your +Modifications, taken alone or in combination with Original Code. + +1.2 "Contributor" means any person or entity that creates or contributes to the +creation of Modifications. + +1.3 "Covered Code" means the Original Code, Modifications, the combination of +Original Code and any Modifications, and/or any respective portions thereof. + +1.4 "Externally Deploy" means: (a) to sublicense, distribute or otherwise make +Covered Code available, directly or indirectly, to anyone other than You; and/or +(b) to use Covered Code, alone or as part of a Larger Work, in any way to +provide a service, including but not limited to delivery of content, through +electronic communication with a client other than You. + +1.5 "Larger Work" means a work which combines Covered Code or portions thereof +with code not governed by the terms of this License. + +1.6 "Modifications" mean any addition to, deletion from, and/or change to, the +substance and/or structure of the Original Code, any previous Modifications, the +combination of Original Code and any previous Modifications, and/or any +respective portions thereof. When code is released as a series of files, a +Modification is: (a) any addition to or deletion from the contents of a file +containing Covered Code; and/or (b) any new file or other representation of +computer program statements that contains any part of Covered Code. + +1.7 "Original Code" means (a) the Source Code of a program or other work as +originally made available by Apple under this License, including the Source Code +of any updates or upgrades to such programs or works made available by Apple +under this License, and that has been expressly identified by Apple as such in +the header file(s) of such work; and (b) the object code compiled from such +Source Code and originally made available by Apple under this License + +1.8 "Source Code" means the human readable form of a program or other work that +is suitable for making modifications to it, including all modules it contains, +plus any associated interface definition files, scripts used to control +compilation and installation of an executable (object code). + +1.9 "You" or "Your" means an individual or a legal entity exercising rights +under this License. For legal entities, "You" or "Your" includes any entity +which controls, is controlled by, or is under common control with, You, where +"control" means (a) the power, direct or indirect, to cause the direction or +management of such entity, whether by contract or otherwise, or (b) ownership of +fifty percent (50%) or more of the outstanding shares or beneficial ownership of +such entity. + +2. Permitted Uses; Conditions & Restrictions. Subject to the terms and +conditions of this License, Apple hereby grants You, effective on the date You +accept this License and download the Original Code, a world-wide, royalty-free, +non-exclusive license, to the extent of Apple's Applicable Patent Rights and +copyrights covering the Original Code, to do the following: + +2.1 Unmodified Code. You may use, reproduce, display, perform, internally +distribute within Your organization, and Externally Deploy verbatim, unmodified +copies of the Original Code, for commercial or non-commercial purposes, provided +that in each instance: + +(a) You must retain and reproduce in all copies of Original Code the copyright +and other proprietary notices and disclaimers of Apple as they appear in the +Original Code, and keep intact all notices in the Original Code that refer to +this License; and + +(b) You must include a copy of this License with every copy of Source Code of +Covered Code and documentation You distribute or Externally Deploy, and You may +not offer or impose any terms on such Source Code that alter or restrict this +License or the recipients' rights hereunder, except as permitted under Section +6. + +2.2 Modified Code. You may modify Covered Code and use, reproduce, display, +perform, internally distribute within Your organization, and Externally Deploy +Your Modifications and Covered Code, for commercial or non-commercial purposes, +provided that in each instance You also meet all of these conditions: + +(a) You must satisfy all the conditions of Section 2.1 with respect to the +Source Code of the Covered Code; + +(b) You must duplicate, to the extent it does not already exist, the notice in +Exhibit A in each file of the Source Code of all Your Modifications, and cause +the modified files to carry prominent notices stating that You changed the files +and the date of any change; and + +(c) If You Externally Deploy Your Modifications, You must make Source Code of +all Your Externally Deployed Modifications either available to those to whom You +have Externally Deployed Your Modifications, or publicly available. Source Code +of Your Externally Deployed Modifications must be released under the terms set +forth in this License, including the license grants set forth in Section 3 +below, for as long as you Externally Deploy the Covered Code or twelve (12) +months from the date of initial External Deployment, whichever is longer. You +should preferably distribute the Source Code of Your Externally Deployed +Modifications electronically (e.g. download from a web site). + +2.3 Distribution of Executable Versions. In addition, if You Externally Deploy +Covered Code (Original Code and/or Modifications) in object code, executable +form only, You must include a prominent notice, in the code itself as well as in +related documentation, stating that Source Code of the Covered Code is available +under the terms of this License with information on how and where to obtain such +Source Code. + +2.4 Third Party Rights. You expressly acknowledge and agree that although +Apple and each Contributor grants the licenses to their respective portions of +the Covered Code set forth herein, no assurances are provided by Apple or any +Contributor that the Covered Code does not infringe the patent or other +intellectual property rights of any other entity. Apple and each Contributor +disclaim any liability to You for claims brought by any other entity based on +infringement of intellectual property rights or otherwise. As a condition to +exercising the rights and licenses granted hereunder, You hereby assume sole +responsibility to secure any other intellectual property rights needed, if any. +For example, if a third party patent license is required to allow You to +distribute the Covered Code, it is Your responsibility to acquire that license +before distributing the Covered Code. + +3. Your Grants. In consideration of, and as a condition to, the licenses +granted to You under this License, You hereby grant to any person or entity +receiving or distributing Covered Code under this License a non-exclusive, +royalty-free, perpetual, irrevocable license, under Your Applicable Patent +Rights and other intellectual property rights (other than patent) owned or +controlled by You, to use, reproduce, display, perform, modify, sublicense, +distribute and Externally Deploy Your Modifications of the same scope and extent +as Apple's licenses under Sections 2.1 and 2.2 above. + +4. Larger Works. You may create a Larger Work by combining Covered Code with +other code not governed by the terms of this License and distribute the Larger +Work as a single product. In each such instance, You must make sure the +requirements of this License are fulfilled for the Covered Code or any portion +thereof. + +5. Limitations on Patent License. Except as expressly stated in Section 2, no +other patent rights, express or implied, are granted by Apple herein. +Modifications and/or Larger Works may require additional patent licenses from +Apple which Apple may grant in its sole discretion. + +6. Additional Terms. You may choose to offer, and to charge a fee for, +warranty, support, indemnity or liability obligations and/or other rights +consistent with the scope of the license granted herein ("Additional Terms") to +one or more recipients of Covered Code. However, You may do so only on Your own +behalf and as Your sole responsibility, and not on behalf of Apple or any +Contributor. You must obtain the recipient's agreement that any such Additional +Terms are offered by You alone, and You hereby agree to indemnify, defend and +hold Apple and every Contributor harmless for any liability incurred by or +claims asserted against Apple or such Contributor by reason of any such +Additional Terms. + +7. Versions of the License. Apple may publish revised and/or new versions of +this License from time to time. Each version will be given a distinguishing +version number. Once Original Code has been published under a particular +version of this License, You may continue to use it under the terms of that +version. You may also choose to use such Original Code under the terms of any +subsequent version of this License published by Apple. No one other than Apple +has the right to modify the terms applicable to Covered Code created under this +License. + +8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in part +pre-release, untested, or not fully tested works. The Covered Code may contain +errors that could cause failures or loss of data, and may be incomplete or +contain inaccuracies. You expressly acknowledge and agree that use of the +Covered Code, or any portion thereof, is at Your sole and entire risk. THE +COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF +ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" +FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM +ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY +QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, +AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT +WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE +FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS, THAT THE +OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT +DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR WRITTEN INFORMATION +OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR +SHALL CREATE A WARRANTY. You acknowledge that the Covered Code is not intended +for use in the operation of nuclear facilities, aircraft navigation, +communication systems, or air traffic control machines in which case the failure +of the Covered Code could lead to death, personal injury, or severe physical or +environmental damage. + +9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT +SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT +OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR YOUR USE +OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER UNDER A +THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR +OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY +OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY +REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF +INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In +no event shall Apple's total liability to You for all damages (other than as may +be required by applicable law) under this License exceed the amount of fifty +dollars ($50.00). + +10. Trademarks. This License does not grant any rights to use the trademarks +or trade names "Apple", "Mac", "Mac OS", "QuickTime", "QuickTime Streaming +Server" or any other trademarks, service marks, logos or trade names belonging +to Apple (collectively "Apple Marks") or to any trademark, service mark, logo or +trade name belonging to any Contributor. You agree not to use any Apple Marks +in or as part of the name of products derived from the Original Code or to +endorse or promote products derived from the Original Code other than as +expressly permitted by and in strict compliance at all times with Apple's third +party trademark usage guidelines which are posted at +http://www.apple.com/legal/guidelinesfor3rdparties.html. + +11. Ownership. Subject to the licenses granted under this License, each +Contributor retains all rights, title and interest in and to any Modifications +made by such Contributor. Apple retains all rights, title and interest in and +to the Original Code and any Modifications made by or on behalf of Apple ("Apple +Modifications"), and such Apple Modifications will not be automatically subject +to this License. Apple may, at its sole discretion, choose to license such +Apple Modifications under this License, or on different terms from those +contained in this License or may choose not to license them at all. + +12. Termination. + +12.1 Termination. This License and the rights granted hereunder will +terminate: + +(a) automatically without notice from Apple if You fail to comply with any +term(s) of this License and fail to cure such breach within 30 days of becoming +aware of such breach; (b) immediately in the event of the circumstances +described in Section 13.5(b); or (c) automatically without notice from Apple if +You, at any time during the term of this License, commence an action for patent +infringement against Apple; provided that Apple did not first commence an action +for patent infringement against You in that instance. + +12.2 Effect of Termination. Upon termination, You agree to immediately stop +any further use, reproduction, modification, sublicensing and distribution of +the Covered Code. All sublicenses to the Covered Code which have been properly +granted prior to termination shall survive any termination of this License. +Provisions which, by their nature, should remain in effect beyond the +termination of this License shall survive, including but not limited to Sections +3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other for +compensation, indemnity or damages of any sort solely as a result of terminating +this License in accordance with its terms, and termination of this License will +be without prejudice to any other right or remedy of any party. + +13. Miscellaneous. + +13.1 Government End Users. The Covered Code is a "commercial item" as defined +in FAR 2.101. Government software and technical data rights in the Covered Code +include only those rights customarily provided to the public as defined in this +License. This customary commercial license in technical data and software is +provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer +Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical +Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software +or Computer Software Documentation). Accordingly, all U.S. Government End Users +acquire Covered Code with only those rights set forth herein. + +13.2 Relationship of Parties. This License will not be construed as creating +an agency, partnership, joint venture or any other form of legal association +between or among You, Apple or any Contributor, and You will not represent to +the contrary, whether expressly, by implication, appearance or otherwise. + +13.3 Independent Development. Nothing in this License will impair Apple's +right to acquire, license, develop, have others develop for it, market and/or +distribute technology or products that perform the same or similar functions as, +or otherwise compete with, Modifications, Larger Works, technology or products +that You may develop, produce, market or distribute. + +13.4 Waiver; Construction. Failure by Apple or any Contributor to enforce any +provision of this License will not be deemed a waiver of future enforcement of +that or any other provision. Any law or regulation which provides that the +language of a contract shall be construed against the drafter will not apply to +this License. + +13.5 Severability. (a) If for any reason a court of competent jurisdiction +finds any provision of this License, or portion thereof, to be unenforceable, +that provision of the License will be enforced to the maximum extent permissible +so as to effect the economic benefits and intent of the parties, and the +remainder of this License will continue in full force and effect. (b) +Notwithstanding the foregoing, if applicable law prohibits or restricts You from +fully and/or specifically complying with Sections 2 and/or 3 or prevents the +enforceability of either of those Sections, this License will immediately +terminate and You must immediately discontinue any use of the Covered Code and +destroy all copies of it that are in your possession or control. + +13.6 Dispute Resolution. Any litigation or other dispute resolution between +You and Apple relating to this License shall take place in the Northern District +of California, and You and Apple hereby consent to the personal jurisdiction of, +and venue in, the state and federal courts within that District with respect to +this License. The application of the United Nations Convention on Contracts for +the International Sale of Goods is expressly excluded. + +13.7 Entire Agreement; Governing Law. This License constitutes the entire +agreement between the parties with respect to the subject matter hereof. This +License shall be governed by the laws of the United States and the State of +California, except that body of California law concerning conflicts of law. + +Where You are located in the province of Quebec, Canada, the following clause +applies: The parties hereby confirm that they have requested that this License +and all related documents be drafted in English. Les parties ont exigé que le +présent contrat et tous les documents connexes soient rédigés en anglais. + +EXHIBIT A. + +"Portions Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. + +This file contains Original Code and/or Modifications of Original Code as +defined in and that are subject to the Apple Public Source License Version 2.0 +(the 'License'). You may not use this file except in compliance with the +License. Please obtain a copy of the License at +http://www.opensource.apple.com/apsl/ and read it before using this file. + +The Original Code and all software distributed under the License are distributed +on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, +AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, +ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET +ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the specific language +governing rights and limitations under the License." diff --git a/third_party/apple_apsl/OWNERS b/third_party/apple_apsl/OWNERS new file mode 100644 index 0000000000000..f7103d31bb0e3 --- /dev/null +++ b/third_party/apple_apsl/OWNERS @@ -0,0 +1,2 @@ +avi@chromium.org +mark@chromium.org diff --git a/third_party/apple_apsl/README.chromium b/third_party/apple_apsl/README.chromium new file mode 100644 index 0000000000000..ad337235e3615 --- /dev/null +++ b/third_party/apple_apsl/README.chromium @@ -0,0 +1,61 @@ +Name: Darwin +URL: http://www.opensource.apple.com/ +Version: unknown +Security Critical: yes +License: Apple Public Source License 2.0 + +Four files are excerpted here: + +malloc.h from: +http://www.opensource.apple.com/source/Libc/Libc-763.11/include/malloc/malloc.h + +Modifications: +- Modified #ifdef guards. +- Removed everything but the definition of malloc_zone_t. +- Renamed _malloc_zone_t to ChromeMallocZone to avoid possible name conflicts. + +CFRuntime.h from: +http://www.opensource.apple.com/source/CF/CF-635/CFRuntime.h + +Modifications: +- Modified #ifdef guards. +- Removed everything but the definition of CFRuntimeBase. +- Renamed CFRuntimeBase to ChromeCFRuntimeBase to avoid possible name conflicts. + +CFBase.h from: +http://www.opensource.apple.com/source/CF/CF-550/CFBase.c +http://www.opensource.apple.com/source/CF/CF-635/CFBase.c + +Modifications: +- Renamed the file to CFBase.h. +- Added #ifdef guards. +- Added an #include of the CFRuntime.h file. +- Removed everything but the definition of __CFAllocator. +- Modified the reference of CFRuntimeBase to ChromeCFRuntimeBase. +- Renamed __CFAllocator to ChromeCFAllocatorLeopards (from CF-550) and to + ChromeCFAllocatorLions (from CF-635) to avoid possible name conflicts. + +cssmapplePriv.h from: +http://www.opensource.apple.com/source/libsecurity_cssm/libsecurity_cssm-31536/lib/cssmapplePriv.h + +Warning: Technically, this is a private Apple header, and as such provides no +guarantee for API stability. However, the use of this header is the only way +to implement OCSP checking per Apple's public documentation on the usage of +their Trust Policy Module. Further, the use of this private header is the +recommended approach from Apple for modifying OCSP policies. + +See: http://developer.apple.com/documentation/Security/Reference/SecAppleTrustPolicyModuleSpec/Apple_Trust_Policy_Module_Functional_Specification.pdf +and http://lists.apple.com/archives/apple-cdsa/2008/Aug/msg00008.html + +Modifications: +- Removed unneeded definitions for internal Apple CSP DL enums and structs + +dnsinfo.h from: +http://www.opensource.apple.com/source/configd/configd-453.19/dnsinfo/dnsinfo.h + +Provides dns_config_t which is used by /net/dns/dns_config_service_posix.cc to +obtain system DNS configuration on Mac OS X. This private header is also used by +Apple's open source mDNSResponder. + +Modifications: +- Removed Availability.h and the corresponding macros. diff --git a/third_party/apple_apsl/cssmapplePriv.h b/third_party/apple_apsl/cssmapplePriv.h new file mode 100644 index 0000000000000..18092bdfaee80 --- /dev/null +++ b/third_party/apple_apsl/cssmapplePriv.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2000-2004 Apple Computer, Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + * + * cssmapplePriv.h -- Private CSSM features specific to Apple's Implementation + */ + +#ifndef _CSSMAPPLE_PRIV_H_ +#define _CSSMAPPLE_PRIV_H_ 1 + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Options for X509TP's CSSM_TP_CertGroupVerify for policy + * CSSMOID_APPLE_TP_REVOCATION_OCSP. A pointer to, and length of, one + * of these is optionally placed in + * CSSM_TP_VERIFY_CONTEXT.Cred->Policy.PolicyIds[n].FieldValue. + */ + +#define CSSM_APPLE_TP_OCSP_OPTS_VERSION 0 + +typedef uint32 CSSM_APPLE_TP_OCSP_OPT_FLAGS; +enum { + // require OCSP verification for each cert; default is "try" + CSSM_TP_ACTION_OCSP_REQUIRE_PER_CERT = 0x00000001, + // require OCSP verification for certs which claim an OCSP responder + CSSM_TP_ACTION_OCSP_REQUIRE_IF_RESP_PRESENT = 0x00000002, + // disable network OCSP transactions + CSSM_TP_ACTION_OCSP_DISABLE_NET = 0x00000004, + // disable reads from local OCSP cache + CSSM_TP_ACTION_OCSP_CACHE_READ_DISABLE = 0x00000008, + // disable reads from local OCSP cache + CSSM_TP_ACTION_OCSP_CACHE_WRITE_DISABLE = 0x00000010, + // if set and positive OCSP verify for given cert, no further revocation + // checking need be done on that cert + CSSM_TP_ACTION_OCSP_SUFFICIENT = 0x00000020, + // generate nonce in OCSP request + CSSM_TP_OCSP_GEN_NONCE = 0x00000040, + // when generating nonce, require matching nonce in response + CSSM_TP_OCSP_REQUIRE_RESP_NONCE = 0x00000080 +}; + +typedef struct { + uint32 Version; + CSSM_APPLE_TP_OCSP_OPT_FLAGS Flags; + CSSM_DATA_PTR LocalResponder; /* URI */ + CSSM_DATA_PTR LocalResponderCert; /* X509 DER encoded cert */ +} CSSM_APPLE_TP_OCSP_OPTIONS; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSSMAPPLE_PRIV_H_ */ diff --git a/third_party/apple_apsl/dnsinfo.h b/third_party/apple_apsl/dnsinfo.h new file mode 100644 index 0000000000000..db2ad902727dc --- /dev/null +++ b/third_party/apple_apsl/dnsinfo.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2004-2006, 2008, 2009, 2011 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +#ifndef __DNSINFO_H__ +#define __DNSINFO_H__ + +/* + * These routines provide access to the systems DNS configuration + */ + +#include +#include +#include +#include +#include + +#define DNSINFO_VERSION 20111104 + +#define DEFAULT_SEARCH_ORDER 200000 /* search order for the "default" resolver domain name */ + +#define DNS_PTR(type, name) \ + union { \ + type name; \ + uint64_t _ ## name ## _p; \ + } + +#define DNS_VAR(type, name) \ + type name + + +#pragma pack(4) +typedef struct { + struct in_addr address; + struct in_addr mask; +} dns_sortaddr_t; +#pragma pack() + + +#pragma pack(4) +typedef struct { + DNS_PTR(char *, domain); /* domain */ + DNS_VAR(int32_t, n_nameserver); /* # nameserver */ + DNS_PTR(struct sockaddr **, nameserver); + DNS_VAR(uint16_t, port); /* port (in host byte order) */ + DNS_VAR(int32_t, n_search); /* # search */ + DNS_PTR(char **, search); + DNS_VAR(int32_t, n_sortaddr); /* # sortaddr */ + DNS_PTR(dns_sortaddr_t **, sortaddr); + DNS_PTR(char *, options); /* options */ + DNS_VAR(uint32_t, timeout); /* timeout */ + DNS_VAR(uint32_t, search_order); /* search_order */ + DNS_VAR(uint32_t, if_index); + DNS_VAR(uint32_t, flags); + DNS_VAR(uint32_t, reach_flags); /* SCNetworkReachabilityFlags */ + DNS_VAR(uint32_t, reserved[5]); +} dns_resolver_t; +#pragma pack() + + +#define DNS_RESOLVER_FLAGS_SCOPED 1 /* configuration is for scoped questions */ + + +#pragma pack(4) +typedef struct { + DNS_VAR(int32_t, n_resolver); /* resolver configurations */ + DNS_PTR(dns_resolver_t **, resolver); + DNS_VAR(int32_t, n_scoped_resolver); /* "scoped" resolver configurations */ + DNS_PTR(dns_resolver_t **, scoped_resolver); + DNS_VAR(uint32_t, reserved[5]); +} dns_config_t; +#pragma pack() + + +__BEGIN_DECLS + +/* + * DNS configuration access APIs + */ +const char * +dns_configuration_notify_key (); + +dns_config_t * +dns_configuration_copy (); + +void +dns_configuration_free (dns_config_t *config); + +void +_dns_configuration_ack (dns_config_t *config, + const char *bundle_id); + +__END_DECLS + +#endif /* __DNSINFO_H__ */ diff --git a/third_party/apple_apsl/malloc.h b/third_party/apple_apsl/malloc.h new file mode 100644 index 0000000000000..9fd1d5d4708a9 --- /dev/null +++ b/third_party/apple_apsl/malloc.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +#ifndef THIRD_PARTY_APPLE_APSL_MALLOC_H_ +#define THIRD_PARTY_APPLE_APSL_MALLOC_H_ + +typedef struct _ChromeMallocZone { + /* Only zone implementors should depend on the layout of this structure; + Regular callers should use the access functions below */ + void *reserved1; /* RESERVED FOR CFAllocator DO NOT USE */ + void *reserved2; /* RESERVED FOR CFAllocator DO NOT USE */ + size_t (*size)(struct _malloc_zone_t *zone, const void *ptr); /* returns the size of a block or 0 if not in this zone; must be fast, especially for negative answers */ + void *(*malloc)(struct _malloc_zone_t *zone, size_t size); + void *(*calloc)(struct _malloc_zone_t *zone, size_t num_items, size_t size); /* same as malloc, but block returned is set to zero */ + void *(*valloc)(struct _malloc_zone_t *zone, size_t size); /* same as malloc, but block returned is set to zero and is guaranteed to be page aligned */ + void (*free)(struct _malloc_zone_t *zone, void *ptr); + void *(*realloc)(struct _malloc_zone_t *zone, void *ptr, size_t size); + void (*destroy)(struct _malloc_zone_t *zone); /* zone is destroyed and all memory reclaimed */ + const char *zone_name; + + /* Optional batch callbacks; these may be NULL */ + unsigned (*batch_malloc)(struct _malloc_zone_t *zone, size_t size, void **results, unsigned num_requested); /* given a size, returns pointers capable of holding that size; returns the number of pointers allocated (maybe 0 or less than num_requested) */ + void (*batch_free)(struct _malloc_zone_t *zone, void **to_be_freed, unsigned num_to_be_freed); /* frees all the pointers in to_be_freed; note that to_be_freed may be overwritten during the process */ + + struct malloc_introspection_t *introspect; + unsigned version; + + /* aligned memory allocation. The callback may be NULL. Present in version >= 5. */ + void *(*memalign)(struct _malloc_zone_t *zone, size_t alignment, size_t size); + + /* free a pointer known to be in zone and known to have the given size. The callback may be NULL. Present in version >= 6.*/ + void (*free_definite_size)(struct _malloc_zone_t *zone, void *ptr, size_t size); + + /* Empty out caches in the face of memory pressure. The callback may be NULL. Present in version >= 8. */ + size_t (*pressure_relief)(struct _malloc_zone_t *zone, size_t goal); +} ChromeMallocZone; + +#endif // THIRD_PARTY_APPLE_APSL_MALLOC_H_