Add loads of ntohl() in image header handling
authorWolfgang Denk <wd@pollux.denx.de>
Sun, 12 Mar 2006 00:59:35 +0000 (01:59 +0100)
committerWolfgang Denk <wd@pollux.denx.de>
Sun, 12 Mar 2006 00:59:35 +0000 (01:59 +0100)
Patch by Steven Scholz, 10 Jun 2005

CHANGELOG
common/cmd_bootm.c
common/cmd_doc.c
common/cmd_fdc.c
common/cmd_nand.c
common/lynxkdi.c

index c4c4124196f86a97bceea9b6bc92710795868887..a11dd4d7409955aaad2f734226f213007e7730c6 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes since U-Boot 1.1.4:
 ======================================================================
 
+* Add loads of ntohl() in image header handling
+  Patch by Steven Scholz, 10 Jun 2005
+
 * Switch MPC86xADS and MPC885ADS boards to use cpuclk environment
   variable to set clock
   Patch by Yuli Barcohen, 05 Jun 2005
index 8599a49d057b954f11d0cb73deb2f8124c2eeb78..8bb524bfe10228b0c7d1d160a5f540c7a2ceb366 100644 (file)
@@ -606,7 +606,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
 #endif /* CONFIG_MPC5xxx */
        }
 
-       kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))hdr->ih_ep;
+       kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong)) ntohl(hdr->ih_ep);
 
        /*
         * Check if there is an initrd image
@@ -621,7 +621,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                /* Copy header so we can blank CRC field for re-calculation */
                memmove (&header, (char *)addr, sizeof(image_header_t));
 
-               if (hdr->ih_magic  != IH_MAGIC) {
+               if (ntohl(hdr->ih_magic)  != IH_MAGIC) {
                        puts ("Bad Magic Number\n");
                        SHOW_BOOT_PROGRESS (-10);
                        do_reset (cmdtp, flag, argc, argv);
@@ -630,7 +630,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                data = (ulong)&header;
                len  = sizeof(image_header_t);
 
-               checksum = hdr->ih_hcrc;
+               checksum = ntohl(hdr->ih_hcrc);
                hdr->ih_hcrc = 0;
 
                if (crc32 (0, (uchar *)data, len) != checksum) {
@@ -644,7 +644,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                print_image_hdr (hdr);
 
                data = addr + sizeof(image_header_t);
-               len  = hdr->ih_size;
+               len  = ntohl(hdr->ih_size);
 
                if (verify) {
                        ulong csum = 0;
@@ -670,7 +670,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                        csum = crc32 (0, (uchar *)data, len);
 #endif /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */
 
-                       if (csum != hdr->ih_dcrc) {
+                       if (csum != ntohl(hdr->ih_dcrc)) {
                                puts ("Bad Data CRC\n");
                                SHOW_BOOT_PROGRESS (-12);
                                do_reset (cmdtp, flag, argc, argv);
@@ -902,7 +902,7 @@ do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
                cmdline = "";
        }
 
-       loader = (void (*)(bd_t *, image_header_t *, char *, char *)) hdr->ih_ep;
+       loader = (void (*)(bd_t *, image_header_t *, char *, char *)) ntohl(hdr->ih_ep);
 
        printf ("## Transferring control to NetBSD stage-2 loader (at address %08lx) ...\n",
                (ulong)loader);
@@ -1364,7 +1364,7 @@ do_bootm_rtems (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        image_header_t *hdr = &header;
        void    (*entry_point)(bd_t *);
 
-       entry_point = (void (*)(bd_t *)) hdr->ih_ep;
+       entry_point = (void (*)(bd_t *)) ntohl(hdr->ih_ep);
 
        printf ("## Transferring control to RTEMS (at address %08lx) ...\n",
                (ulong)entry_point);
@@ -1387,7 +1387,7 @@ do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        image_header_t *hdr = &header;
        char str[80];
 
-       sprintf(str, "%x", hdr->ih_ep); /* write entry-point into string */
+       sprintf(str, "%x", ntohl(hdr->ih_ep)); /* write entry-point into string */
        setenv("loadaddr", str);
        do_bootvx(cmdtp, 0, 0, NULL);
 }
@@ -1400,7 +1400,7 @@ do_bootm_qnxelf (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        char *local_args[2];
        char str[16];
 
-       sprintf(str, "%x", hdr->ih_ep); /* write entry-point into string */
+       sprintf(str, "%x", ntohl(hdr->ih_ep)); /* write entry-point into string */
        local_args[0] = argv[0];
        local_args[1] = str;    /* and provide it via the arguments */
        do_bootelf(cmdtp, 0, 2, local_args);
index c726957cace50e6f6628ee8be18209469bdec793..37b7325be6a21d58c910e3a8ff4b720574acd91a 100644 (file)
@@ -250,7 +250,7 @@ int do_docboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
                print_image_hdr (hdr);
 
-               cnt = (hdr->ih_size + sizeof(image_header_t));
+               cnt = (ntohl(hdr->ih_size) + sizeof(image_header_t));
                cnt -= SECTORSIZE;
        } else {
                puts ("\n** Bad Magic Number **\n");
index 02dffa38e5287c3d783fd887c183383dca17f420..03f4ce6d34c918d295091c8ac384161f0b42b234 100644 (file)
@@ -836,13 +836,13 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                return 1;
        }
        hdr = (image_header_t *)addr;
-       if (hdr->ih_magic  != IH_MAGIC) {
+       if (ntohl(hdr->ih_magic)  != IH_MAGIC) {
                printf ("Bad Magic Number\n");
                return 1;
        }
        print_image_hdr(hdr);
 
-       imsize= hdr->ih_size+sizeof(image_header_t);
+       imsize= ntohl(hdr->ih_size)+sizeof(image_header_t);
        nrofblk=imsize/512;
        if((imsize%512)>0)
                nrofblk++;
index bb51d91fb3daec98ab7f08156f4d4a9650785f34..21adb1b47868a42d51f58bf80bf346754e9deb05 100644 (file)
@@ -717,7 +717,7 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                cnt = (ntohl(hdr->ih_size) + sizeof(image_header_t));
                cnt -= SECTORSIZE;
        } else {
-               printf ("\n** Bad Magic Number 0x%x **\n", hdr->ih_magic);
+               printf ("\n** Bad Magic Number 0x%x **\n", ntohl(hdr->ih_magic));
                SHOW_BOOT_PROGRESS (-1);
                return 1;
        }
index 797d8cc880d35594213ed55a8147eaee410e0c4d..ed1b595b844d4c0012e6c5768778dde9580b967e 100644 (file)
 #if defined(CONFIG_MPC8260) || defined(CONFIG_440EP) || defined(CONFIG_440GR)
 void lynxkdi_boot ( image_header_t *hdr )
 {
-       void (*lynxkdi)(void) = (void(*)(void))hdr->ih_ep;
+       void (*lynxkdi)(void) = (void(*)(void)) ntohl(hdr->ih_ep);
        lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020;
        bd_t *kbd;
        DECLARE_GLOBAL_DATA_PTR;
-       u32 *psz = (u32 *)(hdr->ih_load + 0x0204);
+       u32 *psz = (u32 *)(ntohl(hdr->ih_load) + 0x0204);
 
        memset( parms, 0, sizeof(*parms));
        kbd = gd->bd;
@@ -39,9 +39,9 @@ void lynxkdi_boot ( image_header_t *hdr )
        /* Do a simple check for Bluecat so we can pass the
         * kernel command line parameters.
         */
-       if( le32_to_cpu(*psz) == hdr->ih_size ){
+       if( le32_to_cpu(*psz) == ntohl(hdr->ih_size) ){ /* FIXME: NOT SURE HERE ! */
            char *args;
-           char *cmdline = (char *)(hdr->ih_load + 0x020c);
+           char *cmdline = (char *)(ntohl(hdr->ih_load) + 0x020c);
            int len;
 
            printf("Booting Bluecat KDI ...\n");