[pxebs] Consistently interpret PXE type field as little-endian
authorJoshua Oreman <oremanj@rwcr.net>
Fri, 20 Nov 2009 03:20:17 +0000 (22:20 -0500)
committerMarty Connor <mdc@etherboot.org>
Sat, 21 Nov 2009 00:46:31 +0000 (19:46 -0500)
The PXE menu code also treated the type as big-endian, which went
unnoticed until the first fix because its ntohs() was matched by a
htons() in the PXE boot server discovery code.

Signed-off-by: Marty Connor <mdc@etherboot.org>
src/usr/pxemenu.c

index a778a12..519c200 100644 (file)
@@ -153,7 +153,7 @@ static int pxe_menu_parse ( struct pxe_menu **menu ) {
                          ( num_menu_items * sizeof ( (*menu)->items[0] ) ) );
        memcpy ( raw_menu_item, raw_menu, raw_menu_len );
        for ( i = 0 ; i < num_menu_items ; i++ ) {
-               (*menu)->items[i].type = ntohs ( raw_menu_item->type );
+               (*menu)->items[i].type = le16_to_cpu ( raw_menu_item->type );
                (*menu)->items[i].desc = raw_menu_item->desc;
                /* Set type to 0; this ensures that the description
                 * for the previous menu item is NUL-terminated.