this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Implement dummy libsystem/quarantine + more small changes for Security.framework

+370 -1
+1
platform-include/quarantine.h
··· 1 + ../src/quarantine/quarantine.h
+1
platform-include/xar
··· 1 + ../src/xar/include/
+1
src/CMakeLists.txt
··· 49 49 add_subdirectory(libgcc) 50 50 add_subdirectory(copyfile) 51 51 add_subdirectory(libinfo) 52 + add_subdirectory(quarantine) 52 53 add_subdirectory(libmalloc) 53 54 add_subdirectory(libunwind) 54 55 add_subdirectory(libsystem)
+1 -1
src/libsystem/CMakeLists.txt
··· 39 39 add_library(system SHARED ${libsystem_sources}) 40 40 target_link_libraries(system PRIVATE dyld) 41 41 target_link_libraries(system PUBLIC system_malloc system_c system_kernel keymgr 42 - system_m system_info system_notify libdispatch_shared objc launch 42 + system_m system_info system_notify system_quarantine libdispatch_shared objc launch 43 43 removefile system_copyfile unwind system_coreservices CommonCrypto) 44 44 45 45 install(TARGETS system DESTINATION ${CMAKE_INSTALL_LIBDIR}/darling)
+26
src/quarantine/CMakeLists.txt
··· 1 + project(libquarantine) 2 + 3 + cmake_minimum_required(VERSION 2.4.0) 4 + 5 + if(CMAKE_SIZEOF_VOID_P EQUAL 4 OR CMAKE_INSTALL_LIBDIR STREQUAL "lib32") 6 + set(BITS 32) 7 + add_definitions(-DTARGET_CPU_X86=1) 8 + else(CMAKE_SIZEOF_VOID_P EQUAL 4 OR CMAKE_INSTALL_LIBDIR STREQUAL "lib32") 9 + set(BITS 64) 10 + add_definitions(-DTARGET_CPU_X86_64=1) 11 + endif(CMAKE_SIZEOF_VOID_P EQUAL 4 OR CMAKE_INSTALL_LIBDIR STREQUAL "lib32") 12 + 13 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc -D__DARWIN_UNIX03 -fPIC -w -ggdb") 14 + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -nostdlib -Wl,--unresolved-symbols=ignore-all -Wl,--version-script=${CMAKE_SOURCE_DIR}/darwin.map") 15 + 16 + SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/darling") 17 + SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) 18 + SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 19 + 20 + add_library(system_quarantine SHARED 21 + quarantine.c 22 + ) 23 + target_link_libraries(system_quarantine system_c) 24 + 25 + install(TARGETS system_quarantine DESTINATION ${CMAKE_INSTALL_LIBDIR}/darling) 26 +
+165
src/quarantine/LICENSE
··· 1 + GNU LESSER GENERAL PUBLIC LICENSE 2 + Version 3, 29 June 2007 3 + 4 + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> 5 + Everyone is permitted to copy and distribute verbatim copies 6 + of this license document, but changing it is not allowed. 7 + 8 + 9 + This version of the GNU Lesser General Public License incorporates 10 + the terms and conditions of version 3 of the GNU General Public 11 + License, supplemented by the additional permissions listed below. 12 + 13 + 0. Additional Definitions. 14 + 15 + As used herein, "this License" refers to version 3 of the GNU Lesser 16 + General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 + General Public License. 18 + 19 + "The Library" refers to a covered work governed by this License, 20 + other than an Application or a Combined Work as defined below. 21 + 22 + An "Application" is any work that makes use of an interface provided 23 + by the Library, but which is not otherwise based on the Library. 24 + Defining a subclass of a class defined by the Library is deemed a mode 25 + of using an interface provided by the Library. 26 + 27 + A "Combined Work" is a work produced by combining or linking an 28 + Application with the Library. The particular version of the Library 29 + with which the Combined Work was made is also called the "Linked 30 + Version". 31 + 32 + The "Minimal Corresponding Source" for a Combined Work means the 33 + Corresponding Source for the Combined Work, excluding any source code 34 + for portions of the Combined Work that, considered in isolation, are 35 + based on the Application, and not on the Linked Version. 36 + 37 + The "Corresponding Application Code" for a Combined Work means the 38 + object code and/or source code for the Application, including any data 39 + and utility programs needed for reproducing the Combined Work from the 40 + Application, but excluding the System Libraries of the Combined Work. 41 + 42 + 1. Exception to Section 3 of the GNU GPL. 43 + 44 + You may convey a covered work under sections 3 and 4 of this License 45 + without being bound by section 3 of the GNU GPL. 46 + 47 + 2. Conveying Modified Versions. 48 + 49 + If you modify a copy of the Library, and, in your modifications, a 50 + facility refers to a function or data to be supplied by an Application 51 + that uses the facility (other than as an argument passed when the 52 + facility is invoked), then you may convey a copy of the modified 53 + version: 54 + 55 + a) under this License, provided that you make a good faith effort to 56 + ensure that, in the event an Application does not supply the 57 + function or data, the facility still operates, and performs 58 + whatever part of its purpose remains meaningful, or 59 + 60 + b) under the GNU GPL, with none of the additional permissions of 61 + this License applicable to that copy. 62 + 63 + 3. Object Code Incorporating Material from Library Header Files. 64 + 65 + The object code form of an Application may incorporate material from 66 + a header file that is part of the Library. You may convey such object 67 + code under terms of your choice, provided that, if the incorporated 68 + material is not limited to numerical parameters, data structure 69 + layouts and accessors, or small macros, inline functions and templates 70 + (ten or fewer lines in length), you do both of the following: 71 + 72 + a) Give prominent notice with each copy of the object code that the 73 + Library is used in it and that the Library and its use are 74 + covered by this License. 75 + 76 + b) Accompany the object code with a copy of the GNU GPL and this license 77 + document. 78 + 79 + 4. Combined Works. 80 + 81 + You may convey a Combined Work under terms of your choice that, 82 + taken together, effectively do not restrict modification of the 83 + portions of the Library contained in the Combined Work and reverse 84 + engineering for debugging such modifications, if you also do each of 85 + the following: 86 + 87 + a) Give prominent notice with each copy of the Combined Work that 88 + the Library is used in it and that the Library and its use are 89 + covered by this License. 90 + 91 + b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 + document. 93 + 94 + c) For a Combined Work that displays copyright notices during 95 + execution, include the copyright notice for the Library among 96 + these notices, as well as a reference directing the user to the 97 + copies of the GNU GPL and this license document. 98 + 99 + d) Do one of the following: 100 + 101 + 0) Convey the Minimal Corresponding Source under the terms of this 102 + License, and the Corresponding Application Code in a form 103 + suitable for, and under terms that permit, the user to 104 + recombine or relink the Application with a modified version of 105 + the Linked Version to produce a modified Combined Work, in the 106 + manner specified by section 6 of the GNU GPL for conveying 107 + Corresponding Source. 108 + 109 + 1) Use a suitable shared library mechanism for linking with the 110 + Library. A suitable mechanism is one that (a) uses at run time 111 + a copy of the Library already present on the user's computer 112 + system, and (b) will operate properly with a modified version 113 + of the Library that is interface-compatible with the Linked 114 + Version. 115 + 116 + e) Provide Installation Information, but only if you would otherwise 117 + be required to provide such information under section 6 of the 118 + GNU GPL, and only to the extent that such information is 119 + necessary to install and execute a modified version of the 120 + Combined Work produced by recombining or relinking the 121 + Application with a modified version of the Linked Version. (If 122 + you use option 4d0, the Installation Information must accompany 123 + the Minimal Corresponding Source and Corresponding Application 124 + Code. If you use option 4d1, you must provide the Installation 125 + Information in the manner specified by section 6 of the GNU GPL 126 + for conveying Corresponding Source.) 127 + 128 + 5. Combined Libraries. 129 + 130 + You may place library facilities that are a work based on the 131 + Library side by side in a single library together with other library 132 + facilities that are not Applications and are not covered by this 133 + License, and convey such a combined library under terms of your 134 + choice, if you do both of the following: 135 + 136 + a) Accompany the combined library with a copy of the same work based 137 + on the Library, uncombined with any other library facilities, 138 + conveyed under the terms of this License. 139 + 140 + b) Give prominent notice with the combined library that part of it 141 + is a work based on the Library, and explaining where to find the 142 + accompanying uncombined form of the same work. 143 + 144 + 6. Revised Versions of the GNU Lesser General Public License. 145 + 146 + The Free Software Foundation may publish revised and/or new versions 147 + of the GNU Lesser General Public License from time to time. Such new 148 + versions will be similar in spirit to the present version, but may 149 + differ in detail to address new problems or concerns. 150 + 151 + Each version is given a distinguishing version number. If the 152 + Library as you received it specifies that a certain numbered version 153 + of the GNU Lesser General Public License "or any later version" 154 + applies to it, you have the option of following the terms and 155 + conditions either of that published version or of any later version 156 + published by the Free Software Foundation. If the Library as you 157 + received it does not specify a version number of the GNU Lesser 158 + General Public License, you may choose any version of the GNU Lesser 159 + General Public License ever published by the Free Software Foundation. 160 + 161 + If the Library as you received it specifies that a proxy can decide 162 + whether future versions of the GNU Lesser General Public License shall 163 + apply, that proxy's public statement of acceptance of any version is 164 + permanent authorization for you to choose that version for the 165 + Library.
+103
src/quarantine/quarantine.c
··· 1 + /* 2 + * Darling - libquarantine 3 + * Copyright (c) 2016 Lubos Dolezel, All rights reserved. 4 + * 5 + * This library is free software; you can redistribute it and/or 6 + * modify it under the terms of the GNU Lesser General Public 7 + * License as published by the Free Software Foundation; either 8 + * version 3.0 of the License, or (at your option) any later version. 9 + * 10 + * This library is distributed in the hope that it will be useful, 11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 + * Lesser General Public License for more details. 14 + * 15 + * You should have received a copy of the GNU Lesser General Public 16 + * License along with this library. 17 + */ 18 + 19 + #include "quarantine.h" 20 + #include <limits.h> 21 + #include <stdlib.h> 22 + #include <string.h> 23 + 24 + const char* _qtn_xattr_name = "com.apple.quarantine"; 25 + 26 + static const char* error_strings[] = { 27 + "Undefined error: 0", 28 + "Item not quarantined", 29 + "Quarantine is unavailable", 30 + "Failed to load a compatible version of libMatch" 31 + }; 32 + 33 + struct _qtn_file_s 34 + { 35 + char path[NAME_MAX]; 36 + }; 37 + 38 + qtn_file_t _qtn_file_alloc() 39 + { 40 + qtn_file_t f = (qtn_file_t) malloc(sizeof(struct _qtn_file_s)); 41 + memset(f, 0, sizeof(*f)); 42 + return f; 43 + } 44 + 45 + void _qtn_file_free(qtn_file_t f) 46 + { 47 + free(f); 48 + } 49 + 50 + qtn_file_t _qtn_file_clone(qtn_file_t f) 51 + { 52 + qtn_file_t rv = _qtn_file_alloc(); 53 + memcpy(rv, f, sizeof(*rv)); 54 + return rv; 55 + } 56 + 57 + int _qtn_file_init_with_fd(qtn_file_t file, int fd) 58 + { 59 + return QTN_NOT_QUARANTINED; 60 + } 61 + 62 + int _qtn_file_apply_to_fd(qtn_file_t file, int fd) 63 + { 64 + return QTN_NOT_QUARANTINED; 65 + } 66 + 67 + int _qtn_file_apply_to_path(qtn_file_t file, const char* path) 68 + { 69 + return QTN_NOT_QUARANTINED; 70 + } 71 + 72 + int _qtn_file_init_with_path(qtn_file_t file, const char *path) 73 + { 74 + return QTN_NOT_QUARANTINED; 75 + } 76 + 77 + int _qtn_file_init_with_data(qtn_file_t file, const void *data, size_t len) 78 + { 79 + return QTN_NOT_QUARANTINED; 80 + } 81 + 82 + int _qtn_file_to_data(qtn_file_t file, void * data, size_t* len) 83 + { 84 + return QTN_NOT_QUARANTINED; 85 + } 86 + 87 + const char *_qtn_error(int err) 88 + { 89 + if (err >= 0 || -err >= sizeof(error_strings)/sizeof(error_strings[0])) 90 + return strerror(err); 91 + return error_strings[-err]; 92 + } 93 + 94 + int _qtn_file_set_flags(qtn_file_t file, uint32_t flags) 95 + { 96 + return 0; 97 + } 98 + 99 + uint32_t _qtn_file_get_flags(qtn_file_t file) 100 + { 101 + return 0; 102 + } 103 +
+72
src/quarantine/quarantine.h
··· 1 + /* 2 + * Darling - libquarantine 3 + * Copyright (c) 2016 Lubos Dolezel, All rights reserved. 4 + * 5 + * This library is free software; you can redistribute it and/or 6 + * modify it under the terms of the GNU Lesser General Public 7 + * License as published by the Free Software Foundation; either 8 + * version 3.0 of the License, or (at your option) any later version. 9 + * 10 + * This library is distributed in the hope that it will be useful, 11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 + * Lesser General Public License for more details. 14 + * 15 + * You should have received a copy of the GNU Lesser General Public 16 + * License along with this library. 17 + */ 18 + 19 + #ifndef _QUARANTINE_H_ 20 + #define _QUARANTINE_H_ 21 + 22 + #include <stdint.h> 23 + #include <stddef.h> 24 + 25 + #define QTN_NOT_QUARANTINED (-1) 26 + 27 + typedef struct _qtn_file_s *qtn_file_t; 28 + 29 + extern qtn_file_t _qtn_file_alloc(); 30 + extern void _qtn_file_free(qtn_file_t file); 31 + 32 + extern qtn_file_t _qtn_file_clone(qtn_file_t file); 33 + 34 + extern int _qtn_file_init_with_fd(qtn_file_t file, int fd); 35 + extern int _qtn_file_apply_to_fd(qtn_file_t file, int fd); 36 + extern int _qtn_file_apply_to_path(qtn_file_t file, const char* path); 37 + 38 + extern int _qtn_file_init_with_path(qtn_file_t file, const char *path); 39 + 40 + extern int _qtn_file_init_with_data(qtn_file_t file, const void *, size_t); 41 + extern int _qtn_file_to_data(qtn_file_t file, void *, size_t*); 42 + extern int _qtn_file_set_flags(qtn_file_t file, uint32_t flags); 43 + extern uint32_t _qtn_file_get_flags(qtn_file_t file); 44 + 45 + extern const char *_qtn_error(int err); 46 + 47 + extern const char *_qtn_xattr_name; 48 + 49 + #define QTN_SERIALIZED_DATA_MAX 4096 50 + 51 + #define qtn_file_alloc _qtn_file_alloc 52 + #define qtn_file_free _qtn_file_free 53 + 54 + #define qtn_file_clone _qtn_file_clone 55 + #define qtn_file_set_flags _qtn_file_set_flags 56 + #define qtn_file_get_flags _qtn_file_get_flags 57 + 58 + #define qtn_file_init_with_fd _qtn_file_init_with_fd 59 + #define qtn_file_apply_to_fd _qtn_file_apply_to_fd 60 + #define qtn_file_apply_to_path _qtn_file_apply_to_path 61 + 62 + #define qtn_file_init_with_path _qtn_file_init_with_path 63 + 64 + #define qtn_file_init_with_data _qtn_file_init_with_data 65 + #define qtn_file_to_data _qtn_file_to_data 66 + 67 + #define qtn_error _qtn_error 68 + 69 + #define qtn_xattr_name _qtn_xattr_name 70 + 71 + #endif 72 +