Bug#737363: higan: crashes when importing or loading unheadered NES ROM

Michael Gold michael at bitplane.org
Sat Feb 1 23:35:09 UTC 2014


Package: higan
Version: 094-2

When I try to import an NES ROM without an iNES header, higan segfaults.
I don't see any mention in the user guide about preferred ROM formats
(headered/unheadered, zipped, etc.), but anything unsupported should
fail with a clear error message.  Details follow.

- Michael


E.g., with this ROM:
	"Super Mario Bros. (World).nes" size 40960
	sha1 facee9c577a5262dbe33ac4930bb0b58c8c037f7
	sha256 fcb6a0ef3a20c19b356005fbb21dc8009563b1cb5a9aaebc8e9386b4a8c5912e
the import dialog crashes here (note the 'length' variable):
Program received signal SIGSEGV, Segmentation fault.
0x0000000000526b0d in nall::file::write (this=0x7fffffffbd20, 
    buffer=0x14b9001 <Address 0x14b9001 out of bounds>, length=4156826804)
    at ./nall/file.hpp:173
173	    while(length--) write(*buffer++);

Before crashing it created a directory in the game library:
$ echo *
manifest.bml program.rom
$ cat manifest.bml
unverified


information
  title: Super Mario Bros. (World)
$ wc -c program.rom
1753088 program.rom
$ 

When I restart and try to load that, it crashes as follows:
Program received signal SIGSEGV, Segmentation fault.
0x000000000068db0f in Famicom::Cartridge::power (
    this=0x9f34e0 <Famicom::cartridge>) at fc/cartridge/cartridge.cpp:49
49	  board->power();
(gdb) 


If I add a header to the file, higan can successfully import and run it:
$ (printf 'NES\x1a\2\1\1\0\0\0\0\0\0\0\0\0' \
    && cat "Super Mario Bros. (World).nes") \
    > "Super Mario Bros. (World) [!].nes"
[import game and cd to its directory]
$ cat manifest.bml
unverified

cartridge
  board type=NES-NROM-256
  mirror mode=vertical
  prg
    rom name=program.rom size=0x8000
  chr
    rom name=character.rom size=0x2000

information
  title: Super Mario Bros. (World) [!]
$ cat program.rom character.rom | sha256sum
fcb6a0ef3a20c19b356005fbb21dc8009563b1cb5a9aaebc8e9386b4a8c5912e  -
$ 

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.11-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages higan depends on:
ii  libao4                    1.1.0-2
ii  libasound2                1.0.27.2-3
ii  libatk1.0-0               2.10.0-2
ii  libc6                     2.17-97
ii  libcairo2                 1.12.16-2
ii  libfontconfig1            2.11.0-2
ii  libfreetype6              2.5.2-1
ii  libgcc1                   1:4.8.2-14
ii  libgdk-pixbuf2.0-0        2.28.2-1+b1
ii  libgl1-mesa-glx [libgl1]  9.2.2-1
ii  libglib2.0-0              2.36.4-1
ii  libgtk2.0-0               2.24.22-1
ii  libopenal1                1:1.14-4
ii  libpango-1.0-0            1.36.0-1+b1
ii  libpangocairo-1.0-0       1.36.0-1+b1
ii  libpangoft2-1.0-0         1.36.0-1+b1
ii  libpulse0                 4.0-6+b1
ii  libsdl1.2debian           1.2.15-8
ii  libstdc++6                4.8.2-14
ii  libudev1                  204-6
ii  libx11-6                  2:1.6.2-1
ii  libxext6                  2:1.3.2-1
ii  libxv1                    2:1.0.10-1

higan recommends no packages.

higan suggests no packages.

-- no debconf information
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-games-devel/attachments/20140201/6b56d39f/attachment.sig>


More information about the Pkg-games-devel mailing list