- 在读取属性值后,未检查指针是否为 NULL。
修改:
info_ptr = read_attribute (&attr, &abbrev->attrs[i],
unit, info_ptr, info_ptr_end);
if (!info_ptr)
goto fail;
- 在分配内存失败后,未将指针设置为 NULL。
修改:
nested_funcs = (struct nest_funcinfo *)
bfd_malloc (nested_funcs_size * sizeof (*nested_funcs));
if (!nested_funcs)
{
nested_funcs_size = 0;
goto fail;
}
nested_funcs[nesting_level].func = NULL;
- 在缺少子句标记时,未检查嵌套级别是否大于零。
修改:
if (!abbrev_number)
{
if (nesting_level > 0)
nesting_level--;
continue;
}
- 在无法查找到缩写信息时,未设置错误并跳转到错误处理代码。
修改:
abbrev = lookup_abbrev (abbrev_number, unit->abbrevs);
if (!abbrev)
{
bfd_set_error (bfd_error_bad_value);
goto fail;
}
- 在读取范围列表失败时,未释放已分配的函数信息。
修改:
if (!read_rangelist (unit, &func->arange, attr.u.val))
{
if (!func->is_linkage)
_bfd_release_func_info (abfd, func);
goto fail;
}