Print this page
11506 smatch resync


 316         FOR_EACH_PTR(expr->args, arg) {
 317                 if (!get_implied_strlen(arg, &rl))
 318                         continue;
 319                 if (!is_whole_rl(rl))
 320                         sql_insert_caller_info(expr, STR_LEN, i, "$", show_rl(rl));
 321                 i++;
 322         } END_FOR_EACH_PTR(arg);
 323 }
 324 
 325 static void struct_member_callback(struct expression *call, int param, char *printed_name, struct sm_state *sm)
 326 {
 327         if (sm->state == &merged)
 328                 return;
 329         sql_insert_caller_info(call, STR_LEN, param, printed_name, sm->state->name);
 330 }
 331 
 332 void register_strlen(int id)
 333 {
 334         my_strlen_id = id;
 335 


 336         add_unmatched_state_hook(my_strlen_id, &unmatched_strlen_state);
 337 
 338         select_caller_info_hook(set_param_strlen, STR_LEN);
 339         add_hook(&match_string_assignment, ASSIGNMENT_HOOK);
 340 
 341         add_modification_hook(my_strlen_id, &set_strlen_undefined);
 342         add_merge_hook(my_strlen_id, &merge_estates);
 343         add_hook(&match_call, FUNCTION_CALL_HOOK);
 344         add_member_info_callback(my_strlen_id, struct_member_callback);
 345         add_hook(&match_strlen_condition, CONDITION_HOOK);
 346 
 347         add_function_hook("snprintf", &match_snprintf, NULL);
 348 
 349         add_function_hook("strlcpy", &match_strlcpycat, NULL);
 350         add_function_hook("strlcat", &match_strlcpycat, NULL);
 351         add_function_hook("strcpy", &match_strcpy, NULL);
 352 }
 353 
 354 void register_strlen_equiv(int id)
 355 {
 356         my_equiv_id = id;

 357         add_function_assign_hook("strlen", &match_strlen, NULL);
 358         add_modification_hook(my_equiv_id, &set_strlen_equiv_undefined);
 359 }
 360 


 316         FOR_EACH_PTR(expr->args, arg) {
 317                 if (!get_implied_strlen(arg, &rl))
 318                         continue;
 319                 if (!is_whole_rl(rl))
 320                         sql_insert_caller_info(expr, STR_LEN, i, "$", show_rl(rl));
 321                 i++;
 322         } END_FOR_EACH_PTR(arg);
 323 }
 324 
 325 static void struct_member_callback(struct expression *call, int param, char *printed_name, struct sm_state *sm)
 326 {
 327         if (sm->state == &merged)
 328                 return;
 329         sql_insert_caller_info(call, STR_LEN, param, printed_name, sm->state->name);
 330 }
 331 
 332 void register_strlen(int id)
 333 {
 334         my_strlen_id = id;
 335 
 336         set_dynamic_states(my_strlen_id);
 337 
 338         add_unmatched_state_hook(my_strlen_id, &unmatched_strlen_state);
 339 
 340         select_caller_info_hook(set_param_strlen, STR_LEN);
 341         add_hook(&match_string_assignment, ASSIGNMENT_HOOK);
 342 
 343         add_modification_hook(my_strlen_id, &set_strlen_undefined);
 344         add_merge_hook(my_strlen_id, &merge_estates);
 345         add_hook(&match_call, FUNCTION_CALL_HOOK);
 346         add_member_info_callback(my_strlen_id, struct_member_callback);
 347         add_hook(&match_strlen_condition, CONDITION_HOOK);
 348 
 349         add_function_hook("snprintf", &match_snprintf, NULL);
 350 
 351         add_function_hook("strlcpy", &match_strlcpycat, NULL);
 352         add_function_hook("strlcat", &match_strlcpycat, NULL);
 353         add_function_hook("strcpy", &match_strcpy, NULL);
 354 }
 355 
 356 void register_strlen_equiv(int id)
 357 {
 358         my_equiv_id = id;
 359         set_dynamic_states(my_equiv_id);
 360         add_function_assign_hook("strlen", &match_strlen, NULL);
 361         add_modification_hook(my_equiv_id, &set_strlen_equiv_undefined);
 362 }
 363