- --
Viewing Issue Advanced Details
| ID | Category [?] | Severity [?] | Reproducibility | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 06835 | Misc. | Critical (emulator) | Always | Jan 8, 2018, 09:49 | Nov 5, 2022, 09:01 |
| Tester | Firewave | View Status | Public | Platform | |
| Assigned To | Resolution | Open | OS | ||
| Status [?] | Acknowledged | Driver | |||
| Version | 0.193 | Fixed in Version | Build | ||
| Fixed in Git Commit | Github Pull Request # | ||||
| Summary |
|
||||
| Description |
==112120==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62900072c200 at pc 0x000009e3e96a bp 0x7ffc1ac48190 sp 0x7ffc1ac48188
WRITE of size 2 at 0x62900072c200 thread T0
#0 0x9e3e969 in write /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/bus/megadrive/rom.cpp:1500:28
#1 0x9e3e969 in non-virtual thunk to md_rom_starodys_device::write(address_space&, unsigned int, unsigned short, unsigned short) /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/bus/megadrive/rom.cpp
#2 0x9e26b43 in base_md_cart_slot_device::write(address_space&, unsigned int, unsigned short, unsigned short) /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/bus/megadrive/md_slot.cpp:965:11
#3 0xe2c0a3d in operator() /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/lib/util/delegate.h:544:11
#4 0xe2c0a3d in write16 /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.cpp:469
#5 0xe2c0a3d in write_native /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.cpp:1172
#6 0xe2c0a3d in write_direct<unsigned short, true> /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.cpp:1337
#7 0xe2c0a3d in address_space_specific<unsigned short, (endianness_t)1, 0, true>::write_word(unsigned int, unsigned short, unsigned short) /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.cpp:1479
#8 0xb13d51d in m68000_base_device::m68000_write_byte(unsigned int, unsigned char) /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.cpp:1249:11
#9 0xb2f92e9 in operator() /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/lib/util/delegate.h:544:11
#10 0xb2f92e9 in m68ki_write_8_fc /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.h:681
#11 0xb2f92e9 in m68ki_write_8 /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.h:428
#12 0xb2f92e9 in m68000_base_device::m68k_op_move_8_ai_d() /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kops.cpp:16153
#13 0xb1332d1 in m68000_base_device::execute_run() /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.cpp:806:5
#14 0xb13582f in non-virtual thunk to m68000_base_device::execute_run() /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.cpp
#15 0xe78e272 in run /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/diexec.h:188:15
#16 0xe78e272 in device_scheduler::timeslice() /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/schedule.cpp:481
#17 0xe6a324b in running_machine::run(bool) /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/machine.cpp:357:17
#18 0x8cd10e0 in mame_machine_manager::execute() /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/frontend/mame/mame.cpp:236:19
#19 0x8e1e0d3 in cli_frontend::start_execution(mame_machine_manager*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/frontend/mame/clifront.cpp:257:22
#20 0x8e20ee0 in cli_frontend::execute(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/frontend/mame/clifront.cpp:273:3
#21 0x8cd3717 in emulator_info::start_frontend(emu_options&, osd_interface&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/frontend/mame/mame.cpp:336:18
#22 0x8acddf2 in main /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/osd/sdl/sdlmain.cpp:216:9
#23 0x7f780e82d82f in __libc_start_main /build/glibc-bfm8X4/glibc-2.23/csu/../csu/libc-start.c:291
#24 0x1431838 in _start (/mnt/mame/mame64_as+0x1431838)
Address 0x62900072c200 is a wild pointer.
SUMMARY: AddressSanitizer: heap-buffer-overflow /mnt/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/bus/megadrive/rom.cpp:1500:28 in write
Shadow bytes around the buggy address:
0x0c52800dd7f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd810: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd820: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd830: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c52800dd840:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd850: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd860: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd870: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd880: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800dd890: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
|
||||
| Steps To Reproduce | |||||
| Additional Information | |||||
| Github Commit | |||||
| Flags | |||||
| Regression Version | |||||
| Affected Sets / Systems | megadriv, megadrij | ||||
|
Attached Files
|
|||||
Relationships
| There are no relationship linked to this issue. |
Notes
2
|
No.14641
Firewave Senior Tester
Jan 9, 2018, 22:01
|
m_nvram has a size of 0x2000 and the code tries to access it at 0x3000. This asserts in a Visual Studio debug build. |
|---|---|
|
No.20731
Firewave Senior Tester
Nov 5, 2022, 09:01
|
0.249 on Linux reports:
==1469==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6290007ae200 at pc 0x7f2896842383 bp 0x7ffff87a5aa0 sp 0x7ffff87a5a98
WRITE of size 2 at 0x6290007ae200 thread T0
#0 0x7f2896842382 in md_rom_starodys_device::write(unsigned int, unsigned short, unsigned short) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/bus/megadrive/rom.cpp:1574:28
#1 0x7f2896842501 in non-virtual thunk to md_rom_starodys_device::write(unsigned int, unsigned short, unsigned short) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/bus/megadrive/rom.cpp
#2 0x7f289681961d in base_md_cart_slot_device::write(unsigned int, unsigned short, unsigned short) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/bus/megadrive/md_slot.cpp:964:11
#3 0x7f28a3f235e2 in operator() /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/lib/util/delegate.h:765:11
#4 0x7f28a3f235e2 in std::enable_if<(((std::is_same<emu::device_delegate<void (unsigned int, unsigned short, unsigned short)>, emu::device_delegate<void (unsigned int, unsigned char, unsigned char)> >::value) || (std::is_same<emu::device_delegate<void (unsigned int, unsigned short, unsigned short)>, emu::device_delegate<void (unsigned int, unsigned short, unsigned short)> >::value)) || (std::is_same<emu::device_delegate<void (unsigned int, unsigned short, unsigned short)>, emu::device_delegate<void (unsigned int, unsigned int, unsigned int)> >::value)) || (std::is_same<emu::device_delegate<void (unsigned int, unsigned short, unsigned short)>, emu::device_delegate<void (unsigned int, unsigned long, unsigned long)> >::value), void>::type handler_entry_write_delegate<1, 0, emu::device_delegate<void (unsigned int, unsigned short, unsigned short)> >::write_impl<emu::device_delegate<void (unsigned int, unsigned short, unsigned short)> >(unsigned int, unsigned short, unsigned short) const /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem_hedp.cpp:115:2
#5 0x7f28a3f23458 in handler_entry_write_delegate<1, 0, emu::device_delegate<void (unsigned int, unsigned short, unsigned short)> >::write(unsigned int, unsigned short, unsigned short) const /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem_hedp.cpp:150:2
#6 0x7f289925026b in void dispatch_write<1, 1, 0>(unsigned int, unsigned int, emu::detail::handler_entry_size<1>::uX, emu::detail::handler_entry_size<1>::uX, handler_entry_write<1, 0> const* const*) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.h:1577:47
#7 0x7f289adc8ad7 in write_native /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.h:1741:3
#8 0x7f289adc8ad7 in operator() /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.h:1639:90
#9 0x7f289adc8ad7 in void memory_write_generic<1, 0, (util::endianness)1, 1, true, emu::detail::memory_access_specific<1, 1, 0, (util::endianness)1>::wop()::'lambda'(unsigned int, unsigned short, unsigned short)>(emu::detail::memory_access_specific<1, 1, 0, (util::endianness)1>::wop()::'lambda'(unsigned int, unsigned short, unsigned short), unsigned int, emu::detail::handler_entry_size<1>::uX, emu::detail::handler_entry_size<1>::uX) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.h:921:10
#10 0x7f289ada51d1 in write_word /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/emumem.h:1659:56
#11 0x7f289ada51d1 in operator() /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.cpp:1352:61
#12 0x7f289ada51d1 in __invoke_impl<void, (lambda at ../../../../../src/devices/cpu/m68000/m68kcpu.cpp:1352:14) &, unsigned int, unsigned char> /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:61:14
#13 0x7f289ada51d1 in __invoke_r<void, (lambda at ../../../../../src/devices/cpu/m68000/m68kcpu.cpp:1352:14) &, unsigned int, unsigned char> /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/invoke.h:111:2
#14 0x7f289ada51d1 in std::_Function_handler<void (unsigned int, unsigned char), m68000_base_device::init16(address_space&, address_space&)::$_11>::_M_invoke(std::_Any_data const&, unsigned int&&, unsigned char&&) /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:290:9
#15 0x7f289b01db39 in std::function<void (unsigned int, unsigned char)>::operator()(unsigned int, unsigned char) const /usr/bin/../lib/gcc/x86_64-linux-gnu/12/../../../../include/c++/12/bits/std_function.h:591:9
#16 0x7f289b019655 in m68000_base_device::m68ki_write_8_fc(unsigned int, unsigned int, unsigned int) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.h:689:2
#17 0x7f289b011b4d in m68000_base_device::m68ki_write_8(unsigned int, unsigned int) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.h:432:58
#18 0x7f289aed6b42 in m68000_base_device::x1080_move_b_071234fc() /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kops.cpp:14917:2
#19 0x7f289ad7e803 in m68000_base_device::execute_run() /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.cpp:909:5
#20 0x7f289ad8085f in non-virtual thunk to m68000_base_device::execute_run() /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/cpu/m68000/m68kcpu.cpp
#21 0x7f28a97145b7 in run /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/diexec.h:190:15
#22 0x7f28a97145b7 in device_scheduler::timeslice() /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/schedule.cpp:456:14
#23 0x7f28a95b2067 in running_machine::run(bool) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/emu/machine.cpp:329:17
#24 0x7f28a16c1caf in mame_machine_manager::execute() /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/frontend/mame/mame.cpp:290:19
#25 0x7f28a2a79026 in cli_frontend::start_execution(mame_machine_manager*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/frontend/mame/clifront.cpp:275:22
#26 0x7f28a2a7cb6f in cli_frontend::execute(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/frontend/mame/clifront.cpp:291:3
#27 0x7f28a16c6a8f in emulator_info::start_frontend(emu_options&, osd_interface&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&) /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/frontend/mame/mame.cpp:454:18
#28 0x7f28a98a80fb in main /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/osd/sdl/sdlmain.cpp:191:9
#29 0x7f285c5e9209 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#30 0x7f285c5e92bb in __libc_start_main csu/../csu/libc-start.c:389:3
#31 0x7f2883238120 in _start (/mnt/s/GitHub/mame/mame+0x24d60120) (BuildId: 7b7aeda5846ab501)
Address 0x6290007ae200 is a wild pointer inside of access range of size 0x000000000002.
SUMMARY: AddressSanitizer: heap-buffer-overflow /mnt/s/GitHub/mame/build/projects/sdl/mame/gmake-linux-clang/../../../../../src/devices/bus/megadrive/rom.cpp:1574:28 in md_rom_starodys_device::write(unsigned int, unsigned short, unsigned short)
Shadow bytes around the buggy address:
0x0c52800edbf0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c52800edc40:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc50: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc60: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc70: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c52800edc90: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
|