diff options
author | Alan Modra <amodra@gmail.com> | 2022-06-04 18:31:54 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-06-04 20:57:36 +0930 |
commit | 21aacea42ecaa7aca9b686e8de0f79a1f4e7d668 (patch) | |
tree | 8111f8f14034c4a89303cbcd2fca750d437bb1bd /bfd/mach-o.c | |
parent | ac3afe36d73c84096685fece885d70b28bc9629f (diff) | |
download | gdb-21aacea42ecaa7aca9b686e8de0f79a1f4e7d668.zip gdb-21aacea42ecaa7aca9b686e8de0f79a1f4e7d668.tar.gz gdb-21aacea42ecaa7aca9b686e8de0f79a1f4e7d668.tar.bz2 |
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.
Diffstat (limited to 'bfd/mach-o.c')
-rw-r--r-- | bfd/mach-o.c | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/bfd/mach-o.c b/bfd/mach-o.c index 9f3f1f1..c761544 100644 --- a/bfd/mach-o.c +++ b/bfd/mach-o.c @@ -2656,31 +2656,16 @@ bfd_mach_o_write_contents (bfd *abfd) { bfd_mach_o_dyld_info_command *di = &cmd->command.dyld_info; - if (di->rebase_size != 0) - { - di->rebase_off = mdata->filelen; - mdata->filelen += di->rebase_size; - } - if (di->bind_size != 0) - { - di->bind_off = mdata->filelen; - mdata->filelen += di->bind_size; - } - if (di->weak_bind_size != 0) - { - di->weak_bind_off = mdata->filelen; - mdata->filelen += di->weak_bind_size; - } - if (di->lazy_bind_size != 0) - { - di->lazy_bind_off = mdata->filelen; - mdata->filelen += di->lazy_bind_size; - } - if (di->export_size != 0) - { - di->export_off = mdata->filelen; - mdata->filelen += di->export_size; - } + di->rebase_off = di->rebase_size != 0 ? mdata->filelen : 0; + mdata->filelen += di->rebase_size; + di->bind_off = di->bind_size != 0 ? mdata->filelen : 0; + mdata->filelen += di->bind_size; + di->weak_bind_off = di->weak_bind_size != 0 ? mdata->filelen : 0; + mdata->filelen += di->weak_bind_size; + di->lazy_bind_off = di->lazy_bind_size != 0 ? mdata->filelen : 0; + mdata->filelen += di->lazy_bind_size; + di->export_off = di->export_size != 0 ? mdata->filelen : 0; + mdata->filelen += di->export_size; } break; case BFD_MACH_O_LC_LOAD_DYLIB: |