From 2150401a41b84c8a2295d796952350da43e5d36d Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Thu, 16 May 2013 11:33:39 +0300 Subject: [PATCH] db: move get_param_name() to central location A couple functions have their own implementation of get_param_name() so I have moved this to a central shared location. smatch_param_set.c doesn't deal with the actual parameters only with the pointed at memory so I had to check for that. Signed-off-by: Dan Carpenter --- smatch.h | 1 + smatch_db.c | 23 +++++++++++++++++++++++ smatch_param_filter.c | 24 ------------------------ smatch_param_set.c | 21 ++------------------- 4 files changed, 26 insertions(+), 43 deletions(-) diff --git a/smatch.h b/smatch.h index bb69c67d..61af0db5 100644 --- a/smatch.h +++ b/smatch.h @@ -507,6 +507,7 @@ void add_returned_member_callback(int owner, void (*callback)(int return_id, cha void add_db_fn_call_callback(int type, void (*callback)(struct expression *arg, char *value)); struct range_list *db_return_vals(struct expression *expr); char *get_variable_from_key(struct expression *arg, char *key, struct symbol **sym); +const char *get_param_name(struct sm_state *sm); #define run_sql(call_back, sql...) \ do { \ diff --git a/smatch_db.c b/smatch_db.c index 74ff42fd..0e9743a8 100644 --- a/smatch_db.c +++ b/smatch_db.c @@ -1046,4 +1046,27 @@ char *get_variable_from_key(struct expression *arg, char *key, struct symbol **s return alloc_string(buf); } +const char *get_param_name(struct sm_state *sm) +{ + char *param_name; + int name_len; + static char buf[256]; + + if (!sm->sym->ident) + return NULL; + + param_name = sm->sym->ident->name; + name_len = strlen(param_name); + + if (strcmp(sm->name, param_name) == 0) { + return "$$"; + } else if (sm->name[name_len] == '-' && /* check for '-' from "->" */ + strncmp(sm->name, param_name, name_len) == 0) { + snprintf(buf, sizeof(buf), "$$%s", sm->name + name_len); + return buf; + } else if (sm->name[0] == '*' && strcmp(sm->name + 1, param_name) == 0) { + return "*$$"; + } + return NULL; +} diff --git a/smatch_param_filter.c b/smatch_param_filter.c index 39a30ace..ab4520fe 100644 --- a/smatch_param_filter.c +++ b/smatch_param_filter.c @@ -69,30 +69,6 @@ static void extra_mod_hook(const char *name, struct symbol *sym, struct smatch_s set_state(my_id, name, sym, &modified); } -static const char *get_param_name(struct sm_state *sm) -{ - char *param_name; - int name_len; - static char buf[256]; - - if (!sm->sym->ident) - return NULL; - - param_name = sm->sym->ident->name; - name_len = strlen(param_name); - - if (strcmp(sm->name, param_name) == 0) { - return "$$"; - } else if (sm->name[name_len] == '-' && /* check for '-' from "->" */ - strncmp(sm->name, param_name, name_len) == 0) { - snprintf(buf, sizeof(buf), "$$%s", sm->name + name_len); - return buf; - } else if (sm->name[0] == '*' && strcmp(sm->name + 1, param_name) == 0) { - return "*$$"; - } - return NULL; -} - static struct range_list *get_orig_rl(struct sm_state *sm) { struct range_list *ret = NULL; diff --git a/smatch_param_set.c b/smatch_param_set.c index 8a726306..8b5d0af5 100644 --- a/smatch_param_set.c +++ b/smatch_param_set.c @@ -41,25 +41,6 @@ static void extra_mod_hook(const char *name, struct symbol *sym, struct smatch_s set_state(my_id, name, sym, state); } -static const char *get_param_name(struct sm_state *sm) -{ - char *param_name; - int name_len; - static char buf[256]; - - param_name = sm->sym->ident->name; - name_len = strlen(param_name); - - if (sm->name[name_len] == '-' && /* check for '-' from "->" */ - strncmp(sm->name, param_name, name_len) == 0) { - snprintf(buf, sizeof(buf), "$$%s", sm->name + name_len); - return buf; - } else if (sm->name[0] == '*' && strcmp(sm->name + 1, param_name) == 0) { - return "*$$"; - } - return NULL; -} - static void print_one_return_value_param(int return_id, char *return_ranges, int param, struct sm_state *sm, char *implied_rl, struct state_list *slist) @@ -69,6 +50,8 @@ static void print_one_return_value_param(int return_id, char *return_ranges, param_name = get_param_name(sm); if (!param_name) return; + if (strcmp(param_name, "$$") == 0) + return; sql_insert_return_states(return_id, return_ranges, ADDED_VALUE, param, param_name, implied_rl); -- 2.11.4.GIT