Opened 7 years ago
Closed 7 years ago
#10869 closed defect (fixed)
GLK: FROTZ: Out of bounds read in Mem::initializeUndo
| Reported by: | bgK | Owned by: | dreammaster |
|---|---|---|---|
| Priority: | normal | Component: | Engine: GLK |
| Version: | Keywords: | ||
| Cc: | Game: |
Description
When running a z-code game with an ASan enabled scummvm build, the following error is shown:
==26763==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6060000c34e0 at pc 0x7fb36351111b bp 0x7ffd28f7da70 sp 0x7ffd28f7d218
READ of size 17435 at 0x6060000c34e0 thread T0
#0 0x7fb36351111a in __interceptor_memcpy /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:737
#1 0x556d4b086d0c in Glk::Frotz::Mem::initializeUndo() ../engines/glk/frotz/mem.cpp:82
#2 0x556d4b08656f in Glk::Frotz::Mem::initialize() ../engines/glk/frotz/mem.cpp:39
#3 0x556d4b091f0a in Glk::Frotz::Processor::initialize() ../engines/glk/frotz/processor.cpp:190
#4 0x556d4b07c3fd in Glk::Frotz::Frotz::initialize() ../engines/glk/frotz/frotz.cpp:73
#5 0x556d4b07bf6b in Glk::Frotz::Frotz::runGame() ../engines/glk/frotz/frotz.cpp:49
#6 0x556d4b0eb560 in Glk::GlkEngine::run() ../engines/glk/glk.cpp:145
#7 0x556d4affd721 in runGame ../base/main.cpp:273
#8 0x556d4b0000d4 in scummvm_main ../base/main.cpp:545
#9 0x556d4aff79f2 in main ../backends/platform/sdl/posix/posix-main.cpp:45
#10 0x7fb3618b6222 in __libc_start_main (/usr/lib/libc.so.6+0x24222)
#11 0x556d4afec66d in _start (/home/bastien/dev/scummvm/build/scummvm+0x16766d)
0x6060000c34e0 is located 0 bytes to the right of 64-byte region [0x6060000c34a0,0x6060000c34e0)
allocated by thread T0 here:
#0 0x7fb3635c3019 in __interceptor_malloc /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cc:86
#1 0x556d4b086ea2 in Glk::Frotz::Mem::loadGameHeader() ../engines/glk/frotz/mem.cpp:93
#2 0x556d4b086563 in Glk::Frotz::Mem::initialize() ../engines/glk/frotz/mem.cpp:38
#3 0x556d4b091f0a in Glk::Frotz::Processor::initialize() ../engines/glk/frotz/processor.cpp:190
#4 0x556d4b07c3fd in Glk::Frotz::Frotz::initialize() ../engines/glk/frotz/frotz.cpp:73
#5 0x556d4b07bf6b in Glk::Frotz::Frotz::runGame() ../engines/glk/frotz/frotz.cpp:49
#6 0x556d4b0eb560 in Glk::GlkEngine::run() ../engines/glk/glk.cpp:145
#7 0x556d4affd721 in runGame ../base/main.cpp:273
#8 0x556d4b0000d4 in scummvm_main ../base/main.cpp:545
#9 0x556d4aff79f2 in main ../backends/platform/sdl/posix/posix-main.cpp:45
#10 0x7fb3618b6222 in __libc_start_main (/usr/lib/libc.so.6+0x24222)
I believe the undo memory should be initialized after reading the story file. Mem::initializeUndo makes a copy of it.
Change History (1)
comment:1 by , 7 years ago
| Owner: | set to |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |
Note:
See TracTickets
for help on using tickets.

In 8515590b: