[Scummvm-tracker] [ScummVM :: Bugs] #15483: SCUMM: INDY3: heap buffer-overflow in Scumm::MacGuiImpl::readPascalString()

ScummVM :: Bugs trac at scummvm.org
Wed Nov 13 21:56:32 UTC 2024


#15483: SCUMM: INDY3: heap buffer-overflow in Scumm::MacGuiImpl::readPascalString()
----------------------------+---------------------------
Reporter:  dwatteau         |      Owner:  (none)
    Type:  defect           |     Status:  new
Priority:  normal           |  Component:  Engine: SCUMM
 Version:                   |   Keywords:  macintosh
    Game:  Indiana Jones 3  |
----------------------------+---------------------------
 Current Git HEAD, built with `--enable-asan`, and starting the Macintosh
 release of Indy3 gives this:

 {{{
 User picked target 'indy3-ega-mac' (engine ID 'scumm', game ID 'indy3')...
 =================================================================
 ==8371==ERROR: AddressSanitizer: heap-buffer-overflow on address
 0x61f0000bea06 at pc 0x000109af2224 bp 0x7ff7b6775ac0 sp 0x7ff7b6775ab8
 READ of size 1 at 0x61f0000bea06 thread T0
     #0 0x109af2223 in Scumm::MacGuiImpl::readPascalString(unsigned char*&)
 macgui_impl.cpp:83
     #1 0x109b123b4 in Scumm::MacIndy3Gui::readStrings()
 macgui_indy3.cpp:1032
     #2 0x109b0ff4e in Scumm::MacIndy3Gui::MacIndy3Gui(Scumm::ScummEngine*,
 Common::Path const&) macgui_indy3.cpp:931
     #3 0x109b10c34 in Scumm::MacIndy3Gui::MacIndy3Gui(Scumm::ScummEngine*,
 Common::Path const&) macgui_indy3.cpp:880
     #4 0x109adb930 in Scumm::MacGui::MacGui(Scumm::ScummEngine*,
 Common::Path const&) macgui.cpp:35
     #5 0x109adba64 in Scumm::MacGui::MacGui(Scumm::ScummEngine*,
 Common::Path const&) macgui.cpp:32
     #6 0x109dd5b17 in Scumm::ScummEngine::init() scumm.cpp:1206
     #7 0x1099004fe in Scumm::ScummEngine::run() scumm.h:581
     #8 0x1097cd2df in runGame(Plugin const*, OSystem&, DetectedGame
 const&, void const*) main.cpp:311
     #9 0x1097c6d60 in scummvm_main main.cpp:796
     #10 0x1097b4b52 in main macosx-main.cpp:44
     #11 0x7ff800920417 in start+0x767 (dyld:x86_64+0xfffffffffff6e417)

 0x61f0000bea06 is located 0 bytes after 2950-byte region
 [0x61f0000bde80,0x61f0000bea06)
 allocated by thread T0 here:
     #0 0x10cc5be40 in wrap_malloc+0xa0
 (libclang_rt.asan_osx_dynamic.dylib:x86_64h+0xdde40)
     #1 0x109b11622 in Scumm::MacIndy3Gui::readStrings()
 macgui_indy3.cpp:946
     #2 0x109b0ff4e in Scumm::MacIndy3Gui::MacIndy3Gui(Scumm::ScummEngine*,
 Common::Path const&) macgui_indy3.cpp:931
     #3 0x109b10c34 in Scumm::MacIndy3Gui::MacIndy3Gui(Scumm::ScummEngine*,
 Common::Path const&) macgui_indy3.cpp:880
     #4 0x109adb930 in Scumm::MacGui::MacGui(Scumm::ScummEngine*,
 Common::Path const&) macgui.cpp:35
     #5 0x109adba64 in Scumm::MacGui::MacGui(Scumm::ScummEngine*,
 Common::Path const&) macgui.cpp:32
     #6 0x109dd5b17 in Scumm::ScummEngine::init() scumm.cpp:1206
     #7 0x1099004fe in Scumm::ScummEngine::run() scumm.h:581
     #8 0x1097cd2df in runGame(Plugin const*, OSystem&, DetectedGame
 const&, void const*) main.cpp:311
     #9 0x1097c6d60 in scummvm_main main.cpp:796
     #10 0x1097b4b52 in main macosx-main.cpp:44
     #11 0x7ff800920417 in start+0x767 (dyld:x86_64+0xfffffffffff6e417)

 SUMMARY: AddressSanitizer: heap-buffer-overflow macgui_impl.cpp:83 in
 Scumm::MacGuiImpl::readPascalString(unsigned char*&)
 Shadow bytes around the buggy address:
   0x61f0000be780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   0x61f0000be800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   0x61f0000be880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   0x61f0000be900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   0x61f0000be980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 =>0x61f0000bea00:[06]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
   0x61f0000bea80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
   0x61f0000beb00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
   0x61f0000beb80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
   0x61f0000bec00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
   0x61f0000bec80: 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
 ==8371==ABORTING
 Abort trap: 6
 }}}
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/15483>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list