sval: fixup calls to sval_cmp_val()
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 19 Nov 2012 16:30:54 +0000 (19 19:30 +0300)
committerDan Carpenter <dan.carpenter@oracle.com>
Mon, 19 Nov 2012 18:47:47 +0000 (19 21:47 +0300)
These were getting messed up by sign expansion...

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
check_err_ptr_deref.c
check_get_user_overflow.c

index 7a40b38..2441f7c 100644 (file)
@@ -132,9 +132,9 @@ static void match_err_ptr(const char *fn, struct expression *expr, void *unused)
                if (!sval_is_a_max(tmp_max) && sval_cmp(tmp_max, max) > 0)
                        max = tmp_max;
        } END_FOR_EACH_PTR(tmp);
-       if (sval_cmp_val(min, -4095) < 0)
+       if (sval_is_negative(min) && sval_cmp_val(min, -4095) < 0)
                sm_msg("error: %s too low for ERR_PTR", sval_to_str(min));
-       if (sval_cmp_val(max, 0) > 0)
+       if (sval_is_positive(max) && sval_cmp_val(max, 0) != 0)
                sm_msg("error: passing non neg %s to ERR_PTR", sval_to_str(max));
 }
 
index 8fefe84..ed7f72b 100644 (file)
@@ -122,7 +122,8 @@ static void check_expr(struct expression *expr)
 
        sm = get_sm_state_expr(my_min_id, expr);
        if (sm && slist_has_state(sm->possible, &user_data)) {
-               if (!get_absolute_min(expr, &sval) || sval_cmp_val(sval, -20000) < 0)
+               if (!get_absolute_min(expr, &sval) ||
+                   (sval_is_negative(sval) && sval_cmp_val(sval, -20000) < 0))
                        underflow = 1;
        }