[syslinux] crash in extlinux/main

Jur van der Burg jur at digiater.nl
Sat Jul 16 06:10:35 PDT 2011


I found a bug in extlinux/main.c. Writing a bootloader on a file mounted via
/dev/mapper in Lunix it crashed on me with a segment fault.

The bug is here:

     if (!ioctl(devfd, HDIO_GETGEO, &geo)) {

Since we are already called with geo as a pointer the & is wrong as the
pointer itself will be overwritten.

This works:

int get_geometry(int devfd, uint64_t totalbytes, struct hd_geometry *geo)
     struct floppy_struct fd_str;
     struct loop_info li;
     struct loop_info64 li64;
     const struct geometry_table *gp;
     int rv = 0;

     memset(geo, 0, sizeof *geo);

     if (!ioctl(devfd, HDIO_GETGEO, geo)) {
	goto ok;

If someone can incorporate this in a future version I would be happy.

V4.03 and V4.04 have the same issue, I did not look at another version.

Jur van der Burg.

More information about the Syslinux mailing list