ZBLOG

if (info_ptr >= info_ptr_end): 当 info_ptr 超出了 info_ptr_end,info_ptr 将为空指针。 abbrev = lookup_abbrev (abbrev_number, unit->abbrevs); 如果 abbrev 为 NULL,则会在后续的代码中使用该空指针,导致程序崩溃。 var = (struct varinfo *) bfd_zalloc (abfd, amt); 如果 var 为 NULL,则会在后续的代码

针对空指针错误,可以添加判断语句并进行相应的处理,例如:

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;

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=234

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?