[syslinux] Display graphic from filename broken?

Adrian Weiler
Thu, 30 Oct 2014 13:50:21 -0000

Hi,

the display of LSS16 files from a DISPLAY file (as documented in
http://www.syslinux.org/wiki/index.php/SYSLINUX#Display_graphic_from_filename:)
seems heavily broken since syslinux has been converted from assembler to
C. I already discovered one bug in core/include/graphics.h (and
core/graphics.c): the pointer VGAFilePtr is of type uint16_t*, but
should be plain char*. This bug causes the file name to be assembled
incorrectly in com32/elflink/ldlinux/msg.c (msg_filename(), line 160):
there the pointer is autoincremented, and if it is a uint16_t*, then it
will autoincrement by two bytes. Therefore there will be a null char
every second byte, which makes everybody think the file name has only
one single character.

After fixing this, the file name is assembled correctly, and
msg_viewimage() seems to open the file successfully. The display now
switches to graphic mode, but still the graphic file is not displayed. I
am stuck here. The very same configuration works fine with syslinux 4.05.

Adrian