this repo has no description
1
fork

Configure Feed

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

Add stubs, update submodules

+26 -4
+2
src/frameworks/CoreServices/constants.m
··· 37 37 const CFStringRef _kLSApplicationTypeKey = CFSTR("ApplicationType"); 38 38 const CFStringRef _kLSApplicationUIElementTypeKey = CFSTR("UIElement"); 39 39 const CFStringRef _kLSPreviousASNKey = CFSTR("LSOtherASN"); 40 + const CFStringRef _kLSBundlePathDeviceIDKey = CFSTR("LSBundlePathDeviceIDKey"); 41 + const CFStringRef _kLSBundlePathINodeKey = CFSTR("LSBundlePatINodeKey"); 40 42 const CFStringRef kLSQuarantineAgentNameKey = CFSTR("LSQuarantineAgentName"); 41 43 const CFStringRef kLSQuarantineOriginURLKey = CFSTR("LSQuarantineOriginURL"); 42 44 const CFStringRef kLSQuarantineTimeStampKey = CFSTR("LSQuarantineTimeStamp");
+17 -1
src/kernel/emulation/linux/unistd/faccessat.c
··· 3 3 #include "../errno.h" 4 4 #include <linux-syscalls/linux.h> 5 5 #include "../common_at.h" 6 + #include "../vchroot_expand.h" 7 + #include <lkm/api.h> 8 + #include <mach/lkm.h> 9 + 10 + extern char* strcpy(char* dst, const char* src); 6 11 7 12 long sys_faccessat(int fd, const char* filename, int amode, int flag) 8 13 { 9 14 int ret; 10 15 11 - ret = LINUX_SYSCALL(__NR_faccessat, atfd(fd), filename, amode, atflags_bsd_to_linux(flag)); 16 + struct vchroot_expand_args vc; 17 + 18 + vc.flags = 0; 19 + vc.dfd = atfd(fd); 20 + 21 + strcpy(vc.path, filename); 22 + 23 + ret = vchroot_expand(&vc); 24 + if (ret < 0) 25 + return errno_linux_to_bsd(ret); 26 + 27 + ret = LINUX_SYSCALL(__NR_faccessat, vc.dfd, vc.path, amode, atflags_bsd_to_linux(flag)); 12 28 13 29 if (ret < 0) 14 30 ret = errno_linux_to_bsd(ret);
+7 -3
src/kernel/emulation/linux/vchroot_userspace.c
··· 50 50 #define LINUX_S_IFLNK 0120000 51 51 52 52 #define __simple_printf(...) 53 + // #define __simple_printf __simple_kprintf // For bug hunting 53 54 54 55 #endif 55 56 ··· 59 60 static int prefix_path_len = -1; 60 61 61 62 static const char EXIT_PATH[] = "/Volumes/SystemRoot"; 62 - static bool icase_enabled = false; 63 + static bool icase_enabled = true; 63 64 static const int MAX_SYMLINK_DEPTH = 10; 64 65 65 66 struct context ··· 258 259 int len; 259 260 260 261 if (dfd < 0) 261 - return dfd; 262 + { 263 + ctxt->unknown_component = true; 264 + goto done_getdents; 265 + } 262 266 263 267 // Get a batch of directory entries 264 268 while ((len = LINUX_SYSCALL(__NR_getdents64, dfd, dirents, sizeof(dirents))) > 0) ··· 284 288 ctxt->current_path[prevlen-1] = '/'; 285 289 LINUX_SYSCALL(__NR_close, dfd); 286 290 } 287 - else if ((st.st_mode & LINUX_S_IFMT) == LINUX_S_IFLNK) 291 + else if (status == 0 && (st.st_mode & LINUX_S_IFMT) == LINUX_S_IFLNK) 288 292 { 289 293 // Follow symlink if follow is true or if we haven't reached the end of the input path yet 290 294 if (ctxt->follow || *end)