aboutsummaryrefslogtreecommitdiff
path: root/bfd/mach-o.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-06-04 18:31:54 +0930
committerAlan Modra <amodra@gmail.com>2022-06-04 20:57:36 +0930
commit21aacea42ecaa7aca9b686e8de0f79a1f4e7d668 (patch)
tree8111f8f14034c4a89303cbcd2fca750d437bb1bd /bfd/mach-o.c
parentac3afe36d73c84096685fece885d70b28bc9629f (diff)
downloadgdb-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.c35
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: