diff options
author | Alan Modra <amodra@gmail.com> | 2021-12-17 12:41:28 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2021-12-17 16:01:14 +1030 |
commit | 00d44f7f2f513c56a784a6d418833bb3da8a188f (patch) | |
tree | ab23b6611ea55d54a550a6c4b65a3de10d9789dc /bfd | |
parent | 8ef22662dcd18c6b069fee3b1a10557cb2c03af4 (diff) | |
download | fsf-binutils-gdb-00d44f7f2f513c56a784a6d418833bb3da8a188f.zip fsf-binutils-gdb-00d44f7f2f513c56a784a6d418833bb3da8a188f.tar.gz fsf-binutils-gdb-00d44f7f2f513c56a784a6d418833bb3da8a188f.tar.bz2 |
asan: buffer overflow in mmo_get_symbols
* mmo.c (mmo_get_symbols): Error on symbol name exceeding max length.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/mmo.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -1411,6 +1411,16 @@ SUBSECTION c = c2; } + if (abfd->tdata.mmo_data->symbol_position + >= abfd->tdata.mmo_data->max_symbol_length) + { + _bfd_error_handler + /* xgettext:c-format */ + (_("%pB: symbol name exceeds given max length of %d"), + abfd, abfd->tdata.mmo_data->max_symbol_length); + abfd->tdata.mmo_data->have_error = true; + return false; + } abfd->tdata.mmo_data->lop_stab_symbol[abfd->tdata.mmo_data->symbol_position++] = c; abfd->tdata.mmo_data->lop_stab_symbol[abfd->tdata.mmo_data->symbol_position] = 0; |