273 var = expr_to_var_sym(expr, &sym);
274 if (!var || !sym)
275 goto free;
276 ret = parent_is_free_var_sym(var, sym);
277 free:
278 free_string(var);
279 return ret;
280 }
281
282 void check_free(int id)
283 {
284 my_id = id;
285
286 if (option_project == PROJ_KERNEL) {
287 /* The kernel use check_free_strict.c */
288 return;
289 }
290
291 add_function_hook("free", &match_free, INT_PTR(0));
292
293 if (option_spammy)
294 add_hook(&match_symbol, SYM_HOOK);
295 add_hook(&match_dereferences, DEREF_HOOK);
296 add_hook(&match_call, FUNCTION_CALL_HOOK);
297 add_hook(&match_return, RETURN_HOOK);
298
299 add_modification_hook(my_id, &ok_to_use);
300 select_return_implies_hook(PARAM_FREED, &set_param_freed);
301 add_pre_merge_hook(my_id, &pre_merge_hook);
302 }
|
273 var = expr_to_var_sym(expr, &sym);
274 if (!var || !sym)
275 goto free;
276 ret = parent_is_free_var_sym(var, sym);
277 free:
278 free_string(var);
279 return ret;
280 }
281
282 void check_free(int id)
283 {
284 my_id = id;
285
286 if (option_project == PROJ_KERNEL) {
287 /* The kernel use check_free_strict.c */
288 return;
289 }
290
291 add_function_hook("free", &match_free, INT_PTR(0));
292
293 if (option_project == PROJ_ILLUMOS_USER)
294 add_function_hook("libld_free", &match_free, INT_PTR(0));
295
296 if (option_spammy)
297 add_hook(&match_symbol, SYM_HOOK);
298 add_hook(&match_dereferences, DEREF_HOOK);
299 add_hook(&match_call, FUNCTION_CALL_HOOK);
300 add_hook(&match_return, RETURN_HOOK);
301
302 add_modification_hook(my_id, &ok_to_use);
303 select_return_implies_hook(PARAM_FREED, &set_param_freed);
304 add_pre_merge_hook(my_id, &pre_merge_hook);
305 }
|