Print this page
11506 smatch resync

Split Close
Expand all
Collapse all
          --- old/usr/src/tools/smatch/src/smatch_constraints_required.c
          +++ new/usr/src/tools/smatch/src/smatch_constraints_required.c
↓ open down ↓ 273 lines elided ↑ open up ↑
 274  274          sql_save_constraint_required(data, '<', limit);
 275  275  
 276  276          free_string(limit);
 277  277  free_data:
 278  278          free_string(data);
 279  279  }
 280  280  
 281  281  static void match_assign_has_buf_comparison(struct expression *expr)
 282  282  {
 283  283          struct expression *size;
      284 +        int limit_type;
 284  285  
 285  286          if (expr->op != '=')
 286  287                  return;
 287  288          if (expr->right->type == EXPR_CALL)
 288  289                  return;
 289      -        size = get_size_variable(expr->right);
      290 +        size = get_size_variable(expr->right, &limit_type);
 290  291          if (!size)
 291  292                  return;
      293 +        if (limit_type != ELEM_COUNT)
      294 +                return;
 292  295          match_alloc_helper(expr->left, size, 1);
 293  296  }
 294  297  
 295  298  static void match_assign_data(struct expression *expr)
 296  299  {
 297  300          struct expression *right, *arg, *tmp;
 298  301          int i;
 299  302          int size_arg;
 300  303          int size_arg2 = -1;
 301  304  
↓ open down ↓ 146 lines elided ↑ open up ↑
 448  451          sql_copy_constraint_required(left, right);
 449  452  free:
 450  453          free_string(right);
 451  454          free_string(left);
 452  455  }
 453  456  
 454  457  void register_constraints_required(int id)
 455  458  {
 456  459          my_id = id;
 457  460  
      461 +        set_dynamic_states(my_id);
 458  462          add_hook(&match_assign_size, ASSIGNMENT_HOOK);
 459  463          add_hook(&match_assign_data, ASSIGNMENT_HOOK);
 460  464          add_hook(&match_assign_has_buf_comparison, ASSIGNMENT_HOOK);
 461  465  
 462  466          add_hook(&match_assign_ARRAY_SIZE, ASSIGNMENT_HOOK);
 463  467          add_hook(&match_assign_ARRAY_SIZE, GLOBAL_ASSIGNMENT_HOOK);
 464  468          add_hook(&match_assign_buf_comparison, ASSIGNMENT_HOOK);
 465  469          add_hook(&match_assign_constraint, ASSIGNMENT_HOOK);
 466  470  
 467  471          add_allocation_function("malloc", &match_alloc, 0);
↓ open down ↓ 23 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX