Print this page
12724 update smatch to 0.6.1-rc1-il-5

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/smatch_capped.c
          +++ new/usr/src/tools/smatch/src/smatch_capped.c
↓ open down ↓ 86 lines elided ↑ open up ↑
  87   87                  return 0;
  88   88  
  89   89          if (get_hard_max(expr, &dummy))
  90   90                  return 1;
  91   91  
  92   92          if (is_capped_macro(expr))
  93   93                  return 1;
  94   94  
  95   95          if (expr->type == EXPR_BINOP) {
  96   96                  struct range_list *left_rl, *right_rl;
       97 +                sval_t sval;
  97   98  
  98      -                if (expr->op == '&')
       99 +                if (expr->op == '&' && !get_value(expr->right, &sval))
  99  100                          return 1;
 100  101                  if (expr->op == SPECIAL_RIGHTSHIFT)
      102 +                        return 0;
      103 +                if (expr->op == '%' &&
      104 +                    !get_value(expr->right, &sval) && is_capped(expr->right))
 101  105                          return 1;
 102      -                if (expr->op == '%' && is_capped(expr->right))
 103      -                        return 1;
 104  106                  if (!is_capped(expr->left))
 105  107                          return 0;
 106  108                  if (expr->op == '/')
 107  109                          return 1;
 108  110                  if (!is_capped(expr->right))
 109  111                          return 0;
 110  112                  if (expr->op == '*') {
 111  113                          get_absolute_rl(expr->left, &left_rl);
 112  114                          get_absolute_rl(expr->right, &right_rl);
 113  115                          if (sval_is_negative(rl_min(left_rl)) ||
↓ open down ↓ 235 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX