smatch: rename get_variable_from_expr_complex() to expr_to_str_sym_complex()
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 11 Jan 2013 12:45:30 +0000 (11 15:45 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Fri, 11 Jan 2013 12:45:30 +0000 (11 15:45 +0300)
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
23 files changed:
check_access_ok_math.c
check_assigned_expr.c
check_debug.c
check_dma_on_stack.c
check_leaks.c
check_locking.c
check_macro_side_effects.c
check_memory.c
check_min_t.c
check_missing_break.c
check_or_vs_and.c
check_overflow.c
check_passes_sizeof.c
check_pointer_math.c
check_signed.c
check_sizeof.c
check_type.c
check_user_data.c
check_wait_for_common.c
smatch.h
smatch_conditions.c
smatch_helper.c
smatch_type.c

index a5b9b62..0374335 100644 (file)
@@ -51,7 +51,7 @@ static void match_size(struct expression *size_expr)
        if (!can_overflow(size_expr))
                return;
 
-       name = get_variable_from_expr_complex(size_expr, NULL);
+       name = expr_to_str_sym_complex(size_expr, NULL);
        sm_msg("warn: math in access_ok() is dangerous '%s'", name);
 
        free_string(name);
index 4bce8be..f3b7fdc 100644 (file)
@@ -35,7 +35,7 @@ static struct smatch_state *alloc_my_state(struct expression *expr)
 
        state = __alloc_smatch_state(0);
        expr = strip_expr(expr);
-       name = get_variable_from_expr_complex(expr, NULL);
+       name = expr_to_str_sym_complex(expr, NULL);
        state->name = alloc_sname(name);
        free_string(name);
        state->data = expr;
index b84614f..da1078f 100644 (file)
@@ -57,7 +57,7 @@ static void match_print_implied(const char *fn, struct expression *expr, void *i
        arg = get_argument_from_call_expr(expr->args, 0);
        get_implied_rl(arg, &rl);
 
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
        sm_msg("implied: %s = '%s'", name, show_ranges(rl));
        free_string(name);
 }
@@ -69,7 +69,7 @@ static void match_print_implied_min(const char *fn, struct expression *expr, voi
        char *name;
 
        arg = get_argument_from_call_expr(expr->args, 0);
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
 
        if (get_implied_min(arg, &sval))
                sm_msg("implied min: %s = %s", name, sval_to_str(sval));
@@ -86,7 +86,7 @@ static void match_print_implied_max(const char *fn, struct expression *expr, voi
        char *name;
 
        arg = get_argument_from_call_expr(expr->args, 0);
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
 
        if (get_implied_max(arg, &sval))
                sm_msg("implied max: %s = %s", name, sval_to_str(sval));
@@ -103,7 +103,7 @@ static void match_print_hard_max(const char *fn, struct expression *expr, void *
        char *name;
 
        arg = get_argument_from_call_expr(expr->args, 0);
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
 
        if (get_hard_max(arg, &sval))
                sm_msg("hard max: %s = %s", name, sval_to_str(sval));
@@ -120,7 +120,7 @@ static void match_print_fuzzy_max(const char *fn, struct expression *expr, void
        char *name;
 
        arg = get_argument_from_call_expr(expr->args, 0);
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
 
        if (get_fuzzy_max(arg, &sval))
                sm_msg("fuzzy max: %s = %s", name, sval_to_str(sval));
@@ -137,7 +137,7 @@ static void match_print_absolute_min(const char *fn, struct expression *expr, vo
        char *name;
 
        arg = get_argument_from_call_expr(expr->args, 0);
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
 
        if (get_absolute_min(arg, &sval))
                sm_msg("absolute min: %s = %s", name, sval_to_str(sval));
@@ -156,7 +156,7 @@ static void match_print_absolute_max(const char *fn, struct expression *expr, vo
        arg = get_argument_from_call_expr(expr->args, 0);
        get_absolute_max(arg, &sval);
 
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
        sm_msg("absolute max: %s = %s", name, sval_to_str(sval));
        free_string(name);
 }
@@ -168,7 +168,7 @@ static void match_sval_info(const char *fn, struct expression *expr, void *info)
        char *name;
 
        arg = get_argument_from_call_expr(expr->args, 0);
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
 
        if (!get_implied_value(arg, &sval)) {
                sm_msg("no sval for '%s'", name);
@@ -221,7 +221,7 @@ static void match_buf_size(const char *fn, struct expression *expr, void *info)
        elements = get_array_size(arg);
        bytes = get_array_size_bytes(arg);
 
-       name = get_variable_from_expr_complex(arg, NULL);
+       name = expr_to_str_sym_complex(arg, NULL);
        sm_msg("buf size: '%s' %d elements, %d bytes", name, elements, bytes);
        free_string(name);
 }
index 9f2eddc..79a9f40 100644 (file)
@@ -24,7 +24,7 @@ static void match_dma_func(const char *fn, struct expression *expr, void *param)
        if (arg->type == EXPR_PREOP && arg->op == '&') {
                if (arg->unop->type != EXPR_SYMBOL)
                        return;
-               name = get_variable_from_expr_complex(arg, NULL);
+               name = expr_to_str_sym_complex(arg, NULL);
                sm_msg("error: doing dma on the stack (%s)", name);
                free_string(name);
                return;
index 297f7bd..45115d4 100644 (file)
@@ -62,7 +62,7 @@ static char *get_parent_from_expr(struct expression *expr, struct symbol **sym)
 
        expr = strip_expr(expr);
 
-       name = get_variable_from_expr_complex(expr, sym);
+       name = expr_to_str_sym_complex(expr, sym);
        free_string(name);
        if (!name || !*sym || !(*sym)->ident) {
                *sym = NULL;
@@ -77,7 +77,7 @@ static int is_local(struct expression *expr)
        struct symbol *sym;
        int ret = 0;
 
-       name = get_variable_from_expr_complex(expr, &sym);
+       name = expr_to_str_sym_complex(expr, &sym);
        if (!name || !sym)
                goto out;
        if (sym->ctype.modifiers & (MOD_NONLOCAL | MOD_STATIC | MOD_ADDRESSABLE))
@@ -95,7 +95,7 @@ static int is_param(struct expression *expr)
        struct symbol *tmp;
        int ret = 0;
 
-       name = get_variable_from_expr_complex(expr, &sym);
+       name = expr_to_str_sym_complex(expr, &sym);
        if (!name || !sym)
                goto out;
        FOR_EACH_PTR(cur_func_sym->ctype.base_type->arguments, tmp) {
index 589071d..346a09d 100644 (file)
@@ -377,7 +377,7 @@ static char *get_full_name(struct expression *expr, int index)
                if (!arg)
                        goto free;
                arg = remove_spinlock_check(arg);
-               name = get_variable_from_expr_complex(arg, NULL);
+               name = expr_to_str_sym_complex(arg, NULL);
                if (!name)
                        goto free;
                full_name = make_full_name(lock->name, name);
index 570515b..e40f136 100644 (file)
@@ -24,7 +24,7 @@ static struct smatch_state *alloc_my_state(struct expression *expr)
 
        state = __alloc_smatch_state(0);
        expr = strip_expr(expr);
-       name = get_variable_from_expr_complex(expr, NULL);
+       name = expr_to_str_sym_complex(expr, NULL);
        state->name = alloc_sname(name);
        free_string(name);
        state->data = expr;
@@ -109,7 +109,7 @@ static void match_unop(struct expression *raw_expr)
        if (!positions_eq(old_pos, expr->pos))
                return;
 
-       name = get_variable_from_expr_complex(raw_expr, NULL);
+       name = expr_to_str_sym_complex(raw_expr, NULL);
        sm_msg("warn: side effect in macro '%s' doing '%s'",
                macro, name);
        free_string(name);
index 7a03cd8..78215d5 100644 (file)
@@ -175,7 +175,7 @@ static void match_assign(struct expression *expr)
        struct sm_state *tmp;
 
        left = strip_expr(expr->left);
-       left_name = get_variable_from_expr_complex(left, &left_sym);
+       left_name = expr_to_str_sym_complex(left, &left_sym);
 
        right = strip_expr(expr->right);
        while (right->type == EXPR_ASSIGNMENT)
@@ -189,7 +189,7 @@ static void match_assign(struct expression *expr)
                goto exit;
        }
 
-       right_name = get_variable_from_expr_complex(right, &right_sym);
+       right_name = expr_to_str_sym_complex(right, &right_sym);
 
        if (right_name && (state = get_state(my_id, right_name, right_sym))) {
                if (state == &isfree && !is_complex(right))
@@ -319,7 +319,7 @@ static void match_return(struct expression *ret_value)
        char *name;
        struct symbol *sym;
 
-       name = get_variable_from_expr_complex(ret_value, &sym);
+       name = expr_to_str_sym_complex(ret_value, &sym);
        if (sym)
                assign_parent(sym);
        free_string(name);
@@ -382,7 +382,7 @@ static void match_function_call(struct expression *expr)
 
        FOR_EACH_PTR(expr->args, tmp) {
                tmp = strip_expr(tmp);
-               name = get_variable_from_expr_complex(tmp, &sym);
+               name = expr_to_str_sym_complex(tmp, &sym);
                if (!name)
                        continue;
                if ((state = get_sm_state(my_id, name, sym))) {
index b28b8b4..19da039 100644 (file)
@@ -34,7 +34,7 @@ static void match_assign(struct expression *expr)
        if (sval_cmp(max_left, max_right) >= 0)
                return;
 
-       name = get_variable_from_expr_complex(expr->right, NULL);
+       name = expr_to_str_sym_complex(expr->right, NULL);
        sm_msg("warn: min_t truncates here '%s' (%s vs %s)", name, sval_to_str(max_left), sval_to_str(max_right));
        free_string(name);
 }
index 174b6fb..3fbaf3c 100644 (file)
@@ -44,7 +44,7 @@ static struct smatch_state *alloc_my_state(struct expression *expr)
 
        state = __alloc_smatch_state(0);
        expr = strip_expr(expr);
-       name = get_variable_from_expr_complex(expr, NULL);
+       name = expr_to_str_sym_complex(expr, NULL);
        if (!name)
                name = alloc_string("");
        state->name = alloc_sname(name);
index 5481df4..3e31b4f 100644 (file)
@@ -34,10 +34,10 @@ static int expr_equiv(struct expression *one, struct expression *two)
        if (does_inc_dec(one) || does_inc_dec(two))
                return 0;
 
-       one_name = get_variable_from_expr_complex(one, &one_sym);
+       one_name = expr_to_str_sym_complex(one, &one_sym);
        if (!one_name || !one_sym)
                goto free;
-       two_name = get_variable_from_expr_complex(two, &two_sym);
+       two_name = expr_to_str_sym_complex(two, &two_sym);
        if (!two_name || !two_sym)
                goto free;
        if (one_sym != two_sym)
index 4cbb7c1..c45f825 100644 (file)
@@ -119,7 +119,7 @@ static void array_check(struct expression *expr)
                                return;
                }
 
-               name = get_variable_from_expr_complex(array_expr, NULL);
+               name = expr_to_str_sym_complex(array_expr, NULL);
                /* Blast.  Smatch can't figure out glibc's strcmp __strcmp_cg()
                 * so it prints an error every time you compare to a string
                 * literal array with 4 or less chars.
@@ -195,8 +195,8 @@ static void match_strcpy(const char *fn, struct expression *expr, void *unused)
        if (data_size && dest_size >= data_size)
                return;
 
-       dest_name = get_variable_from_expr_complex(dest, NULL);
-       data_name = get_variable_from_expr_complex(data, NULL);
+       dest_name = expr_to_str_sym_complex(dest, NULL);
+       data_name = expr_to_str_sym_complex(data, NULL);
 
        if (data_size)
                sm_msg("error: %s() '%s' too large for '%s' (%d vs %d)",
@@ -237,7 +237,7 @@ static void match_snprintf(const char *fn, struct expression *expr, void *unused
                return;
        if (strcmp(format, "\"%s\""))
                goto free;
-       data_name = get_variable_from_expr_complex(data, NULL);
+       data_name = expr_to_str_sym_complex(data, NULL);
        data_size = get_array_size_bytes(data);
        if (limit_size.value < data_size)
                sm_msg("error: snprintf() chops off the last chars of '%s': %d vs %s",
@@ -269,7 +269,7 @@ static void match_sprintf(const char *fn, struct expression *expr, void *unused)
                return;
        if (strcmp(format, "\"%s\""))
                goto free;
-       data_name = get_variable_from_expr_complex(data, NULL);
+       data_name = expr_to_str_sym_complex(data, NULL);
        data_size = get_array_size_bytes(data);
        if (dest_size < data_size)
                sm_msg("error: sprintf() copies too much data from '%s': %d vs %d",
@@ -298,7 +298,7 @@ static void match_limited(const char *fn, struct expression *expr, void *_limite
        if (has >= needed.value)
                return;
 
-       dest_name = get_variable_from_expr_complex(dest, NULL);
+       dest_name = expr_to_str_sym_complex(dest, NULL);
        sm_msg("error: %s() '%s' too small (%d vs %s)", fn, dest_name, has, sval_to_str(needed));
        free_string(dest_name);
 }
index 41343d8..71b5ed5 100644 (file)
@@ -27,10 +27,10 @@ static int expr_equiv(struct expression *one, struct expression *two)
        if (one->type != two->type)
                return 0;
 
-       one_name = get_variable_from_expr_complex(one, &one_sym);
+       one_name = expr_to_str_sym_complex(one, &one_sym);
        if (!one_name || !one_sym)
                goto free;
-       two_name = get_variable_from_expr_complex(two, &two_sym);
+       two_name = expr_to_str_sym_complex(two, &two_sym);
        if (!two_name || !two_sym)
                goto free;
        if (one_sym != two_sym)
index 105dd36..a193ee5 100644 (file)
@@ -69,7 +69,7 @@ static void match_binop(struct expression *expr)
        if (!is_size_in_bytes(expr->right))
                return;
 
-       name = get_variable_from_expr_complex(expr->left, NULL);
+       name = expr_to_str_sym_complex(expr->left, NULL);
        sm_msg("warn: potential pointer math issue ('%s' is a %d bit pointer)",
               name, type->bit_size);
        free_string(name);
index 9329d14..be5be47 100644 (file)
@@ -45,8 +45,8 @@ static void match_assign(struct expression *expr)
                return;
        max = sval_type_max(sym);
        if (sval_cmp(max, sval) < 0 && !(sval.value < 256 && max.value == 127)) {
-               left_name = get_variable_from_expr_complex(expr->left, NULL);
-               right_name = get_variable_from_expr_complex(expr->right, NULL);
+               left_name = expr_to_str_sym_complex(expr->left, NULL);
+               right_name = expr_to_str_sym_complex(expr->right, NULL);
                sm_msg("warn: '%s' %s can't fit into %s '%s'",
                       right_name, sval_to_numstr(sval), sval_to_numstr(max), left_name);
                free_string(left_name);
@@ -61,7 +61,7 @@ static void match_assign(struct expression *expr)
                        return;
                if (sval_positive_bits(sval) == 7)
                        return;
-               left_name = get_variable_from_expr_complex(expr->left, NULL);
+               left_name = expr_to_str_sym_complex(expr->left, NULL);
                if (min.value == 0) {
                        sm_msg("warn: assigning %s to unsigned variable '%s'",
                               sval_to_str(sval), left_name);
@@ -102,11 +102,11 @@ static int cap_gt_zero_and_lt(struct expression *expr)
                            right->op != SPECIAL_UNSIGNED_LTE)
                                return 0;
 
-                       name1 = get_variable_from_expr_complex(var, NULL);
+                       name1 = expr_to_str_sym_complex(var, NULL);
                        if (!name1)
                                goto free;
 
-                       name2 = get_variable_from_expr_complex(right->left, NULL);
+                       name2 = expr_to_str_sym_complex(right->left, NULL);
                        if (!name2)
                                goto free;
                        if (!strcmp(name1, name2))
@@ -152,11 +152,11 @@ static int cap_lt_zero_or_gt(struct expression *expr)
                            right->op != SPECIAL_UNSIGNED_GTE)
                                return 0;
 
-                       name1 = get_variable_from_expr_complex(var, NULL);
+                       name1 = expr_to_str_sym_complex(var, NULL);
                        if (!name1)
                                goto free;
 
-                       name2 = get_variable_from_expr_complex(right->left, NULL);
+                       name2 = expr_to_str_sym_complex(right->left, NULL);
                        if (!name2)
                                goto free;
                        if (!strcmp(name1, name2))
@@ -205,7 +205,7 @@ static int print_unsigned_never_less_than_zero(struct expression *expr)
        if (!get_value(expr->right, &known) || known.value != 0)
                return 0;
 
-       name = get_variable_from_expr_complex(expr->left, NULL);
+       name = expr_to_str_sym_complex(expr->left, NULL);
        sm_msg("warn: unsigned '%s' is never less than zero.", name);
        free_string(name);
        return 1;
@@ -268,7 +268,7 @@ static void match_condition(struct expression *expr)
        }
 
        if (!possibly_true_rl(rl_left, expr->op, rl_right)) {
-               char *name = get_variable_from_expr_complex(expr, NULL);
+               char *name = expr_to_str_sym_complex(expr, NULL);
 
                sm_msg("warn: impossible condition '(%s) => (%s %s %s)'", name,
                       show_ranges(rl_left), show_special(expr->op),
@@ -277,7 +277,7 @@ static void match_condition(struct expression *expr)
        }
 
        if (!possibly_false_rl(rl_left, expr->op, rl_right)) {
-               char *name = get_variable_from_expr_complex(expr, NULL);
+               char *name = expr_to_str_sym_complex(expr, NULL);
 
                sm_msg("warn: always true condition '(%s) => (%s %s %s)'", name,
                       show_ranges(rl_left_orig), show_special(expr->op),
index a4020a1..6f89fdf 100644 (file)
@@ -22,7 +22,7 @@ static void check_pointer(struct expression *expr, char *ptr_name)
        get_value(expr, &sval);
 
        expr = strip_expr(expr->cast_expression);
-       name = get_variable_from_expr_complex(expr, NULL);
+       name = expr_to_str_sym_complex(expr, NULL);
        if (!name)
                return;
 
@@ -40,7 +40,7 @@ static void match_call_assignment(struct expression *expr)
        if (!is_pointer(expr->left))
                return;
 
-       ptr_name = get_variable_from_expr_complex(expr->left, NULL);
+       ptr_name = expr_to_str_sym_complex(expr->left, NULL);
        if (!ptr_name)
                return;
 
index 828e352..149331a 100644 (file)
@@ -33,7 +33,7 @@ static void match_free(const char *fn, struct expression *expr, void *data)
        if (!type || !type->ident)
                return;
 
-       name = get_variable_from_expr_complex(arg_expr, NULL);
+       name = expr_to_str_sym_complex(arg_expr, NULL);
 
        if (!strcmp("sk_buff", type->ident->name)) {
                sm_msg("error: use kfree_skb() here instead of kfree(%s)", name);
index e3d0bfc..198efea 100644 (file)
@@ -152,7 +152,7 @@ int is_user_data(struct expression *expr)
        if (tmp)
                return slist_has_state(tmp->possible, &user_data);
 
-       name = get_variable_from_expr_complex(expr, &sym);
+       name = expr_to_str_sym_complex(expr, &sym);
        if (!name || !sym)
                goto free;
 
index 11936df..4e3f5e2 100644 (file)
@@ -17,7 +17,7 @@ static void match_wait_for_common(const char *fn, struct expression *expr, void
 
        if (!expr_unsigned(expr->left))
                return;
-       name = get_variable_from_expr_complex(expr->left, NULL);
+       name = expr_to_str_sym_complex(expr->left, NULL);
        sm_msg("error: '%s()' returns negative and '%s' is unsigned", fn, name);
        free_string(name);
 }
index 3aee552..1d2f81f 100644 (file)
--- a/smatch.h
+++ b/smatch.h
@@ -222,7 +222,7 @@ void free_string(char *str);
 struct smatch_state *alloc_state_num(int num);
 struct expression *get_argument_from_call_expr(struct expression_list *args,
                                               int num);
-char *get_variable_from_expr_complex(struct expression *expr,
+char *expr_to_str_sym_complex(struct expression *expr,
                                     struct symbol **sym_ptr);
 char *get_variable_from_expr(struct expression *expr,
                             struct symbol **sym_ptr);
index ea7c977..c3af9b5 100644 (file)
@@ -338,7 +338,7 @@ static void hackup_unsigned_compares(struct expression *expr)
 static void split_conditions(struct expression *expr)
 {
        if (option_debug) {
-               char *cond = get_variable_from_expr_complex(expr, NULL);
+               char *cond = expr_to_str_sym_complex(expr, NULL);
 
                sm_debug("%d in split_conditions (%s)\n", get_lineno(), cond);
                free_string(cond);
index 09287f2..af7022f 100644 (file)
@@ -242,7 +242,7 @@ static void __get_variable_from_expr(struct symbol **sym_ptr, char *buf,
  *
  */
 
-char *get_variable_from_expr_complex(struct expression *expr, struct symbol **sym_ptr)
+char *expr_to_str_sym_complex(struct expression *expr, struct symbol **sym_ptr)
 {
        static char var_name[VAR_LEN];
        int complicated = 0;
index 1ee3ab2..db69acb 100644 (file)
@@ -342,7 +342,7 @@ int is_static(struct expression *expr)
        struct symbol *sym;
        int ret = 0;
 
-       name = get_variable_from_expr_complex(expr, &sym);
+       name = expr_to_str_sym_complex(expr, &sym);
        if (!name || !sym)
                goto free;
 
@@ -463,7 +463,7 @@ struct symbol *get_member_type_from_key(struct expression *expr, char *key)
                return get_real_base_type(sym);
        }
 
-       name = get_variable_from_expr_complex(expr, &sym);
+       name = expr_to_str_sym_complex(expr, &sym);
        free_string(name);
        if (!sym)
                return NULL;