[Scummvm-tracker] [ScummVM :: Bugs] #17016: NANCY: Heap overread looking at Ace & Clyde
ScummVM :: Bugs
trac at scummvm.org
Sat Jul 25 01:59:15 UTC 2026
#17016: NANCY: Heap overread looking at Ace & Clyde
-------------------------------------------------+-------------------------
Reporter: tunnelsociety | Owner: (none)
Type: defect | Status: new
Priority: high | Component: Engine:
| Nancy
Version: | Keywords:
Game: Nancy Drew: The Secret of Shadow |
Ranch |
-------------------------------------------------+-------------------------
A heap overread is reported by ASan when Nancy greets the other horses.
ScummVM 2026.3.1git9148-g36f45f67418
I reproduce as far back as c578867ebd41ca178d7d529ee5a1bdf24b5d0b47 so I
don't think this issue was recently introduced. (That's "recently" in
terms of nancy10 history! ;) )
{{{
Loading new scene 4418: description "COR ", frame 0, vertical scroll 0,
kContinueSceneSound
=================================================================
==18840==ERROR: AddressSanitizer: heap-buffer-overflow on address
0x52500007f644 at pc 0x5592dfd0d585 bp 0x7fff56204af0 sp 0x7fff56204ae8
READ of size 2 at 0x52500007f644 thread T0
#0 0x5592dfd0d584 in
Graphics::ManagedSurface::blitFromInner(Graphics::Surface const&,
Common::Rect const&, Common::Rect const&, Graphics::Palette const*)
graphics/managed_surface.cpp:655:11
#1 0x5592dfd1018e in
Graphics::ManagedSurface::blitFrom(Graphics::ManagedSurface const&,
Common::Rect const&, Common::Rect const&)
graphics/managed_surface.cpp:579:3
#2 0x5592de5600b1 in
Nancy::GraphicsManager::blitToScreen(Nancy::RenderObject const&,
Common::Rect) engines/nancy/graphics.cpp:445:10
#3 0x5592de55fa9d in Nancy::GraphicsManager::draw(bool)
engines/nancy/graphics.cpp:155:5
#4 0x5592dee4bd24 in Nancy::NancyEngine::run()
engines/nancy/nancy.cpp:389:14
#5 0x5592de4ba697 in runGame(Plugin const*, OSystem&, DetectedGame
const&, void const*) base/main.cpp:328:33
#6 0x5592de4afd9b in scummvm_main base/main.cpp:840:13
#7 0x5592de4a2206 in main backends/platform/sdl/posix/posix-
main.cpp:56:12
#8 0x7f74ecc35ca7 (/lib/x86_64-linux-gnu/libc.so.6+0x29ca7) (BuildId:
c495b62edadd6c356265942ec1282d98058a7b41)
#9 0x7f74ecc35d64 in __libc_start_main (/lib/x86_64-linux-
gnu/libc.so.6+0x29d64) (BuildId: c495b62edadd6c356265942ec1282d98058a7b41)
#10 0x5592de395210 in _start (scummvm+0x1b7a210) (BuildId:
aa77fb462a590a1861f2dd86c1578686cc1e06e4)
0x52500007f644 is located 0 bytes after 9540-byte region
[0x52500007d100,0x52500007f644)
allocated by thread T0 here:
#0 0x5592de43522d in calloc (scummvm+0x1c1a22d) (BuildId:
aa77fb462a590a1861f2dd86c1578686cc1e06e4)
#1 0x5592dfe2783b in Graphics::Surface::create(short, short,
Graphics::PixelFormat const&) graphics/surface.cpp:156:12
#2 0x5592dfcfacd6 in Graphics::ManagedSurface::create(short, short,
Graphics::PixelFormat const&) graphics/managed_surface.cpp:165:16
#3 0x5592de562966 in
Nancy::GraphicsManager::copyToManaged(Graphics::Surface const&,
Graphics::ManagedSurface&, bool, bool) engines/nancy/graphics.cpp:240:7
#4 0x5592de7c4dcf in Nancy::Action::PlaySecondaryMovie::execute()
engines/nancy/action/secondarymovie.cpp:752:4
#5 0x5592de7571e3 in
Nancy::Action::ActionManager::processActionRecords()
engines/nancy/action/actionmanager.cpp:260:12
#6 0x5592de5a0d5e in Nancy::State::Scene::run()
engines/nancy/state/scene.cpp:1291:17
#7 0x5592de596cf7 in Nancy::State::Scene::process()
engines/nancy/state/scene.cpp:177:3
#8 0x5592dee4bb62 in Nancy::NancyEngine::run()
engines/nancy/nancy.cpp:384:7
#9 0x5592de4ba697 in runGame(Plugin const*, OSystem&, DetectedGame
const&, void const*) base/main.cpp:328:33
#10 0x5592de4afd9b in scummvm_main base/main.cpp:840:13
#11 0x5592de4a2206 in main backends/platform/sdl/posix/posix-
main.cpp:56:12
#12 0x7f74ecc35ca7 (/lib/x86_64-linux-gnu/libc.so.6+0x29ca7)
(BuildId: c495b62edadd6c356265942ec1282d98058a7b41)
SUMMARY: AddressSanitizer: heap-buffer-overflow
graphics/managed_surface.cpp:655:11 in
Graphics::ManagedSurface::blitFromInner(Graphics::Surface const&,
Common::Rect const&, Common::Rect const&, Graphics::Palette const*)
Shadow bytes around the buggy address:
0x52500007f380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x52500007f400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x52500007f480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x52500007f500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x52500007f580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x52500007f600: 00 00 00 00 00 00 00 00[04]fa fa fa fa fa fa fa
0x52500007f680: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x52500007f700: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x52500007f780: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x52500007f800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x52500007f880: 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
==18840==ABORTING
}}}
--
Ticket URL: <https://bugs.scummvm.org/ticket/17016>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list