aboutsummaryrefslogtreecommitdiffstats
path: root/package/system
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2016-01-28 22:38:30 +0000
committerRafał Miłecki <zajec5@gmail.com>2016-01-28 22:38:30 +0000
commit159d49a28151e3b7d89c0e27c4a4ec5a51e68cc8 (patch)
treef2b5501bc3e319948a62fa56e603aa47140ce1c9 /package/system
parenta7ad799518216239fe73d416888b14040bc6a25e (diff)
downloadmaster-187ad058-159d49a28151e3b7d89c0e27c4a4ec5a51e68cc8.tar.gz
master-187ad058-159d49a28151e3b7d89c0e27c4a4ec5a51e68cc8.tar.bz2
master-187ad058-159d49a28151e3b7d89c0e27c4a4ec5a51e68cc8.zip
mtd: allow writing Seama files to "firmware" on Broadcom targets
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@48534 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/system')
-rw-r--r--package/system/mtd/src/trx.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/package/system/mtd/src/trx.c b/package/system/mtd/src/trx.c
index 245ee7630a..5763917827 100644
--- a/package/system/mtd/src/trx.c
+++ b/package/system/mtd/src/trx.c
@@ -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");