Пример #1
0
void check_freeing_null(int id)
{
	my_id = id;
	if (!option_spammy)
		return;
	if (option_project == PROJ_KERNEL)
		add_function_hook("kfree", &match_free, NULL);
	else
		add_function_hook("free", &match_free, NULL);
}
Пример #2
0
void check_held_dev(int id)
{
	if (option_project != PROJ_KERNEL)
		return;

	my_id = id;
	add_function_hook("dev_hold", &match_dev_hold, NULL);
	add_function_hook("dev_put", &match_dev_put, NULL);
	register_returns_held_funcs();
	add_hook(&match_return, RETURN_HOOK);
}
Пример #3
0
static void register_no_return_funcs(void)
{
	struct token *token;
	const char *func;
	char name[256];

	if (option_project == PROJ_NONE)
		strcpy(name, "no_return_funcs");
	else
		snprintf(name, 256, "%s.no_return_funcs", option_project_str);

	token = get_tokens_file(name);
	if (!token)
		return;
	if (token_type(token) != TOKEN_STREAMBEGIN)
		return;
	token = token->next;
	while (token_type(token) != TOKEN_STREAMEND) {
		if (token_type(token) != TOKEN_IDENT)
			return;
		func = show_ident(token->ident);
		add_function_hook(func, &__match_nullify_path_hook, NULL);
		token = token->next;
	}
	clear_token_alloc();
}
Пример #4
0
static void register_funcs_from_file(void)
{
	struct token *token;
	const char *func;
	int arg;

	token = get_tokens_file("kernel.dma_funcs");
	if (!token)
		return;
	if (token_type(token) != TOKEN_STREAMBEGIN)
		return;
	token = token->next;
	while (token_type(token) != TOKEN_STREAMEND) {
		if (token_type(token) != TOKEN_IDENT)
			return;
		func = show_ident(token->ident);
		token = token->next;
		if (token_type(token) != TOKEN_NUMBER)
			return;
		arg = atoi(token->number);
		add_function_hook(func, &match_dma_func, INT_PTR(arg));
		token = token->next;
	}
	clear_token_alloc();
}
Пример #5
0
void check_ns_capable(int id)
{
	if (option_project != PROJ_KERNEL)
		return;

	ns_capable_id = id;
	add_function_hook("ns_capable", &match_ns_capable, INT_PTR(0));
	select_caller_info_hook(set_db_ns_capable, NS_CAPABLE);
}
Пример #6
0
void check_bit_shift(int id)
{
	my_id = id;

	shifters = create_function_hashtable(5000);
	register_shifters();

	add_hook(&match_assign, ASSIGNMENT_HOOK);
	add_hook(&match_binop, BINOP_HOOK);

	if (option_info) {
		add_hook(&match_binop_info, BINOP_HOOK);
		if (option_project == PROJ_KERNEL) {
			add_function_hook("set_bit", &match_call, INT_PTR(0));
			add_function_hook("test_bit", &match_call, INT_PTR(0));
		}
	}
}
Пример #7
0
void check_capable(int id)
{
	if (option_project != PROJ_KERNEL)
		return;

	capable_id = id;
	add_function_hook("capable", &match_capable, INT_PTR(0));

	add_hook(&save_call_info, FUNCTION_CALL_HOOK);
	add_split_return_callback(save_return_info);
	select_caller_info_hook(set_db_capable, CAPABLE);
}
Пример #8
0
void check_resource_size(int id)
{
	my_id = id;

	if (option_project != PROJ_KERNEL)
		return;

	add_function_hook("ioremap_nocache", &match_resource, (void *)1);
	add_function_hook("ioremap", &match_resource, (void *)1);
	add_function_hook("__request_region", &match_resource, (void *)2);
	add_function_hook("__release_region", &match_resource, (void *)2);
	add_function_hook("__devm_request_region", &match_resource, (void *)3);
	add_function_hook("__devm_release_region", &match_resource, (void *)3);
}
Пример #9
0
void check_strcpy_overflow(int id)
{
	add_function_hook("strcpy", &match_strcpy, NULL);
}