|
|
|
@ -44,6 +44,8 @@ struct trx_header { |
|
|
|
|
uint32_t offsets[3]; /* Offsets of partitions from start of header */ |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
#define SEAMA_MAGIC 0x17a4a35e |
|
|
|
|
|
|
|
|
|
#if __BYTE_ORDER == __BIG_ENDIAN |
|
|
|
|
#define STORE32_LE(X) ((((X) & 0x000000FF) << 24) | (((X) & 0x0000FF00) << 8) | (((X) & 0x00FF0000) >> 8) | (((X) & 0xFF000000) >> 24)) |
|
|
|
|
#elif __BYTE_ORDER == __LITTLE_ENDIAN |
|
|
|
@ -118,6 +120,10 @@ trx_check(int imagefd, const char *mtd, char *buf, int *len) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Allow writing Seama files to firmware without an extra validation */ |
|
|
|
|
if (trx->magic == SEAMA_MAGIC) |
|
|
|
|
return 1; |
|
|
|
|
|
|
|
|
|
if (trx->magic != TRX_MAGIC || trx->len < sizeof(struct trx_header)) { |
|
|
|
|
if (quiet < 2) { |
|
|
|
|
fprintf(stderr, "Bad trx header\n"); |
|
|
|
|