asan: uninitialised write in bfd_mach_o_write_contents

* mach-o.c (bfd_mach_o_write_contents): Always set
	bfd_mach_o_dyld_info_command *_off fields.
This commit is contained in:
Alan Modra
2022-06-04 18:31:54 +09:30
parent ac3afe36d7
commit 21aacea42e

View File

@ -2656,32 +2656,17 @@ bfd_mach_o_write_contents (bfd *abfd)
{ {
bfd_mach_o_dyld_info_command *di = &cmd->command.dyld_info; bfd_mach_o_dyld_info_command *di = &cmd->command.dyld_info;
if (di->rebase_size != 0) di->rebase_off = di->rebase_size != 0 ? mdata->filelen : 0;
{
di->rebase_off = mdata->filelen;
mdata->filelen += di->rebase_size; mdata->filelen += di->rebase_size;
} di->bind_off = di->bind_size != 0 ? mdata->filelen : 0;
if (di->bind_size != 0)
{
di->bind_off = mdata->filelen;
mdata->filelen += di->bind_size; mdata->filelen += di->bind_size;
} di->weak_bind_off = di->weak_bind_size != 0 ? mdata->filelen : 0;
if (di->weak_bind_size != 0)
{
di->weak_bind_off = mdata->filelen;
mdata->filelen += di->weak_bind_size; mdata->filelen += di->weak_bind_size;
} di->lazy_bind_off = di->lazy_bind_size != 0 ? mdata->filelen : 0;
if (di->lazy_bind_size != 0)
{
di->lazy_bind_off = mdata->filelen;
mdata->filelen += di->lazy_bind_size; mdata->filelen += di->lazy_bind_size;
} di->export_off = di->export_size != 0 ? mdata->filelen : 0;
if (di->export_size != 0)
{
di->export_off = mdata->filelen;
mdata->filelen += di->export_size; mdata->filelen += di->export_size;
} }
}
break; break;
case BFD_MACH_O_LC_LOAD_DYLIB: case BFD_MACH_O_LC_LOAD_DYLIB:
case BFD_MACH_O_LC_LOAD_DYLINKER: case BFD_MACH_O_LC_LOAD_DYLINKER: