setup_data: check to make sure kernel version >= 0x0209
authorH. Peter Anvin <hpa@linux.intel.com>
Fri, 29 Jun 2012 22:43:20 +0000 (15:43 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Fri, 29 Jun 2012 22:43:20 +0000 (15:43 -0700)
Versions before 2.09 had no setup_data support.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
com32/lib/syslinux/load_linux.c

index 86fc07f..622c2ab 100644 (file)
@@ -38,6 +38,7 @@
 #include <inttypes.h>
 #include <string.h>
 #include <minmax.h>
+#include <errno.h>
 #include <suffix_number.h>
 #include <syslinux/align.h>
 #include <syslinux/linux.h>
@@ -461,6 +462,12 @@ int syslinux_boot_linux(void *kernel_buf, size_t kernel_size,
            addr_t best_addr = 0;
            size_t size = sdp->hdr.len + sizeof(sdp->hdr);
 
+           if (hdr.version < 0x0209) {
+               /* Setup data not supported */
+               errno = ENXIO;  /* Kind of arbitrary... */
+               goto bail;
+           }
+
            if (!sdp->data || !sdp->hdr.len)
                continue;