/* Trap attempts to remove directories outside the sandbox. */ int rmdir(const char* path) { #define __rmdir(x) syscall(SYS_rmdir, (x)) int result = 0; int isInSandbox = __darwintrace_is_in_sandbox(path, 0); if (isInSandbox == 1) { debug_printf("darwintrace: rmdir was allowed at %s\n", path); } else if (isInSandbox == 0) { /* outside sandbox, but sandbox is defined: forbid */ debug_printf("darwintrace: removing directory %s was forbidden\n", path); errno = EACCES; result = -1; } if (result == 0) { result = __rmdir(path); } return result; }
int rmdir(const char *path) { _gfs_hook_debug_v(fputs("Hooking rmdir\n", stderr)); return (__rmdir(path)); }