针对空指针错误,可以添加判断语句并进行相应的处理,例如:
if (info_ptr >= info_ptr_end){
bfd_set_error (bfd_error_bad_value);
goto fail;
}
if (!abbrev){
_bfd_error_handler
(_("DWARF error: could not find abbrev number %u"),
abbrev_number);
bfd_set_error (bfd_error_bad_value);
goto fail;
}
if (!func){
bfd_set_error (bfd_error_no_memory);
goto fail;
}
if (!var){
bfd_set_error (bfd_error_no_memory);
goto fail;
}
if (!info_ptr){
bfd_set_error (bfd_error_bad_value);
goto fail;
}
针对跳转到fail标签处的情况,可以在fail标签处添加判断语句,避免使用空指针,例如:
fail:
if (func && func->name)
free (func->name);
if (func && func->caller_file)
free (func->caller_file);
if (var && var->name)
free (var->name);
if (var && var->file)
free (var->file);
bfd_close (abfd);
return FALSE;