[source] otrx: use helper function when checking image's CRC32

LEDE Commits lede-commits at lists.infradead.org
Tue Nov 14 13:34:25 PST 2017


rmilecki pushed a commit to source.git, branch master:
https://git.lede-project.org/c6761e7c8e5d0d33e2f266c297b403f337f93c6b

commit c6761e7c8e5d0d33e2f266c297b403f337f93c6b
Author: Rafał Miłecki <rafal at milecki.pl>
AuthorDate: Mon Nov 13 23:07:45 2017 +0100

    otrx: use helper function when checking image's CRC32
    
    This requires changing this helper to accept initial/current CRC32
    value as argument but it allows dropping duplicated (complex?) code
    calculating the CRC32.
    
    Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 package/utils/otrx/src/otrx.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/package/utils/otrx/src/otrx.c b/package/utils/otrx/src/otrx.c
index 101a310..7b02977 100644
--- a/package/utils/otrx/src/otrx.c
+++ b/package/utils/otrx/src/otrx.c
@@ -124,9 +124,7 @@ static const uint32_t crc32_tbl[] = {
 	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
 };
 
-uint32_t otrx_crc32(uint8_t *buf, size_t len) {
-	uint32_t crc = 0xffffffff;
-
+uint32_t otrx_crc32(uint32_t crc, uint8_t *buf, size_t len) {
 	while (len) {
 		crc = crc32_tbl[(crc ^ *buf) & 0xff] ^ (crc >> 8);
 		buf++;
@@ -158,7 +156,6 @@ static int otrx_check(int argc, char **argv) {
 	size_t bytes, length;
 	uint8_t buf[1024];
 	uint32_t crc32;
-	int i;
 	int err = 0;
 
 	if (argc < 3) {
@@ -203,8 +200,7 @@ static int otrx_check(int argc, char **argv) {
 	fseek(trx, trx_offset + TRX_FLAGS_OFFSET, SEEK_SET);
 	length -= TRX_FLAGS_OFFSET;
 	while ((bytes = fread(buf, 1, otrx_min(sizeof(buf), length), trx)) > 0) {
-		for (i = 0; i < bytes; i++)
-			crc32 = crc32_tbl[(crc32 ^ buf[i]) & 0xff] ^ (crc32 >> 8);
+		crc32 = otrx_crc32(crc32, buf, bytes);
 		length -= bytes;
 	}
 
@@ -316,7 +312,7 @@ static int otrx_create_write_hdr(FILE *trx, struct trx_header *hdr) {
 		return -ENOMEM;
 	}
 
-	crc32 = otrx_crc32(buf + TRX_FLAGS_OFFSET, length - TRX_FLAGS_OFFSET);
+	crc32 = otrx_crc32(0xffffffff, buf + TRX_FLAGS_OFFSET, length - TRX_FLAGS_OFFSET);
 	hdr->crc32 = cpu_to_le32(crc32);
 
 	fseek(trx, 0, SEEK_SET);



More information about the lede-commits mailing list