checksum = ntohl(hdr->ih_hcrc);
        hdr->ih_hcrc = 0;
 
-       if (crc32 (0, (char *)&hdr, sizeof(image_header_t)) != checksum) {
+       if (crc32 (0, (char *)hdr, sizeof(image_header_t)) != checksum) {
                puts ("\n** Bad Header Checksum **\n");
                SHOW_BOOT_PROGRESS (-2);
                return 1;
        }
+       hdr->ih_hcrc = htonl(checksum); /* restore checksum for later use */
 
        print_image_hdr (hdr);