From 266f8475136517bbf85f8f1aac727e48fe52632c Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Wed, 10 Feb 2021 14:28:50 +0300 Subject: [PATCH] expressions: introduce gen_expr_from_param_key() This takes data from the DB and generates and expression pointer for it. Signed-off-by: Dan Carpenter --- smatch_expressions.c | 16 ++++++++++++++++ smatch_extra.h | 1 + 2 files changed, 17 insertions(+) diff --git a/smatch_expressions.c b/smatch_expressions.c index 59e8ce44..5e204182 100644 --- a/smatch_expressions.c +++ b/smatch_expressions.c @@ -304,6 +304,22 @@ struct expression *gen_expression_from_key(struct expression *arg, const char *k return ret; } +struct expression *gen_expr_from_param_key(struct expression *expr, int param, const char *key) +{ + struct expression *ret = NULL; + struct symbol *sym; + char *name; + + name = get_name_sym_from_key(expr, param, key, &sym); + if (!name || !sym) + goto free; + + ret = gen_expression_from_name_sym(name, sym); +free: + free_string(name); + return ret; +} + bool is_fake_var(struct expression *expr) { if (expr && (expr->smatch_flags & Fake)) diff --git a/smatch_extra.h b/smatch_extra.h index 342e02d2..263066dc 100644 --- a/smatch_extra.h +++ b/smatch_extra.h @@ -226,6 +226,7 @@ struct expression *unknown_value_expression(struct expression *expr); int is_fake_call(struct expression *expr); struct expression *gen_expression_from_name_sym(const char *name, struct symbol *sym); struct expression *gen_expression_from_key(struct expression *arg, const char *key); +struct expression *gen_expr_from_param_key(struct expression *expr, int param, const char *key); bool is_fake_var(struct expression *expr); struct expression *fake_variable(struct symbol *type, const char *name); void free_tmp_expressions(void); -- 2.11.4.GIT