Esempio n. 1
0
void disable_non_net_syscalls_uniarch(void)
{
	unsigned int i;

	for_each_syscall(i) {
		if (validate_specific_syscall_silent(syscalls, i) == FALSE)
			continue;

		if (syscalls[i].entry->flags & ACTIVE) {
			if (is_syscall_net_related(syscalls, i) == FALSE) {
				toggle_syscall_n(i, FALSE, syscalls[i].entry->name, syscalls[i].entry->name);
			}
		}
	}
}
Esempio n. 2
0
void toggle_syscall(const char *arg, bool state)
{
	int specific_syscall = 0;
	char * arg_name = NULL;

	if (biarch == TRUE) {
		toggle_syscall_biarch(arg, state);
		return;
	}

	/* non-biarch case. */
	check_user_specified_arch(arg, &arg_name, NULL, NULL); //We do not care about arch here, just to get rid of arg flags.
	specific_syscall = search_syscall_table(syscalls, max_nr_syscalls, arg_name);
	toggle_syscall_n(specific_syscall, state, arg, arg_name);
	clear_check_user_specified_arch(arg, &arg_name);
}
Esempio n. 3
0
void enable_random_syscalls_uniarch(void)
{
	unsigned int call;

retry:
	call = rand() % max_nr_syscalls;

	if (validate_specific_syscall_silent(syscalls, call) == FALSE)
		goto retry;

	if (no_files == TRUE)
		if (is_syscall_net_related(syscalls, call) == FALSE)
			goto retry;

	/* if we've set this to be disabled, don't enable it! */
	if (syscalls[call].entry->flags & TO_BE_DEACTIVATED)
		goto retry;

	toggle_syscall_n(call, TRUE, syscalls[call].entry->name, syscalls[call].entry->name);
}
Esempio n. 4
0
void toggle_syscall(const char *arg, bool state)
{
	int specific_syscall = 0;
	char * arg_name = NULL;

	if (biarch == TRUE) {
		toggle_syscall_biarch(arg, state);
		return;
	}

	/* non-biarch case. */
	check_user_specified_arch(arg, &arg_name, NULL, NULL); //We do not care about arch here, just to get rid of arg flags.

	specific_syscall = search_syscall_table(syscalls, max_nr_syscalls, arg_name);
	if (specific_syscall == -1) {
		outputerr("No idea what syscall (%s) is.\n", arg);
		goto out;
	}

	toggle_syscall_n(specific_syscall, state, arg, arg_name);

out:
	clear_check_user_specified_arch(arg, &arg_name);
}