From 541038c5241fe9bbfdd89ce3c71c5bc65a48bec4 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Mon, 15 Apr 2013 12:12:02 +0300 Subject: [PATCH] param_limit/filter: ignore whole ranges Limiting or filtering a parameter to "anything" is not a useful limit. We can just ignore it. Printing it out is a lot of data to print and then when we read it and parse it, that causes a slow down as well. Signed-off-by: Dan Carpenter --- smatch_param_filter.c | 14 ++++++++------ smatch_param_limit.c | 4 ++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/smatch_param_filter.c b/smatch_param_filter.c index 58d1845d..39a30ace 100644 --- a/smatch_param_filter.c +++ b/smatch_param_filter.c @@ -93,7 +93,7 @@ static const char *get_param_name(struct sm_state *sm) return NULL; } -static char *get_orig_rl(struct sm_state *sm) +static struct range_list *get_orig_rl(struct sm_state *sm) { struct range_list *ret = NULL; struct sm_state *tmp; @@ -109,24 +109,24 @@ static char *get_orig_rl(struct sm_state *sm) } ret = rl_union(ret, estate_rl(extra)); } END_FOR_EACH_PTR(tmp); - return show_rl(ret); + return ret; } static void print_one_mod_param(int return_id, char *return_ranges, int param, struct sm_state *sm, struct state_list *slist) { const char *param_name; - char *filter; + struct range_list *rl; param_name = get_param_name(sm); if (!param_name) return; - filter = get_orig_rl(sm); - if (!filter) + rl = get_orig_rl(sm); + if (is_whole_rl(rl)) return; sql_insert_return_states(return_id, return_ranges, FILTER_VALUE, param, - param_name, filter); + param_name, show_rl(rl)); } static void print_one_extra_param(int return_id, char *return_ranges, @@ -135,6 +135,8 @@ static void print_one_extra_param(int return_id, char *return_ranges, struct smatch_state *old; const char *param_name; + if (estate_is_whole(sm->state)) + return; old = get_state_slist(start_states, SMATCH_EXTRA, sm->name, sm->sym); if (old && estates_equiv(old, sm->state)) return; diff --git a/smatch_param_limit.c b/smatch_param_limit.c index 20717422..a0b6420d 100644 --- a/smatch_param_limit.c +++ b/smatch_param_limit.c @@ -114,6 +114,8 @@ static void print_return_value_param(int return_id, char *return_ranges, struct if (!my_sm) { struct smatch_state *old; + if (estate_is_whole(tmp->state)) + continue; old = get_state_slist(start_states, SMATCH_EXTRA, tmp->name, tmp->sym); if (old && estates_equiv(old, tmp->state)) continue; @@ -129,6 +131,8 @@ static void print_return_value_param(int return_id, char *return_ranges, struct /* This represents an impossible state. I screwd up. Bail. */ if (!estate_rl(state)) continue; + if (estate_is_whole(state)) + continue; sql_insert_return_states(return_id, return_ranges, LIMITED_VALUE, param, "$$", state->name); -- 2.11.4.GIT