예제 #1
0
/* 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;
}
예제 #2
0
파일: hooks.c 프로젝트: krichter722/gfarm
int
rmdir(const char *path)
{
	_gfs_hook_debug_v(fputs("Hooking rmdir\n", stderr));
	return (__rmdir(path));
}