#include <netinet/in.h>
#include <sys/mman.h>
#include <sys/stat.h>
-#include <time.h>
#include <unistd.h>
#include <zlib.h>
uint8_t ih_type;
uint8_t ih_comp;
union {
- uint8_t ih_name[IH_NMLEN];
+ char ih_name[IH_NMLEN];
asus_t asus;
} tail;
} image_header_t;
/*
* Calculate payload checksum
*/
- hdr->ih_dcrc = htonl(crc32(0, data, len));
+ hdr->ih_dcrc = htonl(crc32(0, (Bytef *)data, len));
hdr->ih_size = htonl(len);
/*
* Calculate header checksum
*/
hdr->ih_hcrc = 0;
- hdr->ih_hcrc = htonl(crc32(0, hdr, sizeof(image_header_t)));
+ hdr->ih_hcrc = htonl(crc32(0, (Bytef *)hdr, sizeof(image_header_t)));
}
usage(const char *progname, int status)
{
FILE *stream = (status != EXIT_SUCCESS) ? stderr : stdout;
- int i;
fprintf(stream, "Usage: %s [OPTIONS...]\n", progname);
fprintf(stream, "\n"
int
process_image(char *progname, char *filename, op_mode_t opmode)
{
- int fd, len;
- void *data, *ptr;
+ int fd;
+ void *ptr;
char namebuf[IH_NMLEN];
struct stat sbuf;
- uint32_t checksum, offset_kernel, offset_sqfs, offset_end,
- offset_sec_header, offset_eb, offset_image_end;
+ uint32_t offset_kernel, offset_sqfs, offset_end,
+ offset_sec_header, offset_eb, offset_image_end;
squashfs_sb_t *sqs;
image_header_t *hdr;
}
if (opmode == FACTORY) {
- strncpy(&namebuf, (char *)&hdr->tail.ih_name, IH_NMLEN);
+ strncpy(namebuf, hdr->tail.ih_name, IH_NMLEN);
hdr->tail.asus.kernel.major = 0;
hdr->tail.asus.kernel.minor = 0;
hdr->tail.asus.fs.major = 0;
if (opmode == FACTORY) {
hdr = ptr+offset_sec_header;
memcpy(hdr, ptr, sizeof(image_header_t));
- strncpy((char *)&hdr->tail.ih_name, &namebuf, IH_NMLEN);
+ strncpy(hdr->tail.ih_name, namebuf, IH_NMLEN);
calc_crc(hdr, ptr+offset_kernel, offset_sqfs - offset_kernel);
calc_crc((image_header_t *)ptr, ptr+offset_kernel, offset_image_end - offset_kernel);
} else {
main(int argc, char **argv)
{
int opt;
- char *filename, *progname;
+ char *filename = NULL;
+ char *progname;
op_mode_t opmode = NONE;
progname = argv[0];