[PATCH] firmware-utils: support checksum for AVM fritzbox wasp SOCs
Hauke Mehrtens
hauke at hauke-m.de
Sun Jan 16 09:52:23 PST 2022
Hi,
This code looks good in general just some small comments.
Hauke
On 1/13/22 11:20, kestrel1974 at t-online.de wrote:
> From: Daniel Kestrel <kestrel1974 at t-online.de>
>
> This patch adds creating the checksum to be able to create an
> image and boot the secondary ath79 based wireless assist (WASP)
> SoC with a second instance of OpenWrt for some AVM Fritzbox
> devices (3390, 3490, 5490, 7490).
> The utility is called avm-wasp-checksum and was originally
> created by Andreas Boehler.
>
> Signed-off-by: Daniel Kestrel <kestrel1974 at t-online.de>
> ---
> CMakeLists.txt | 1 +
> src/avm-wasp-checksum.c | 141 ++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 142 insertions(+)
> create mode 100644 src/avm-wasp-checksum.c
>
.....
> +
> + while (!feof(in_fp)) {
> + switch (model) {
> + case MODEL_3390:
> + read = fread(buf, sizeof(uint32_t), CHUNK_SIZE, in_fp);
fread() and fwrite() are returning a size_t and not a ssize_t.
You should probably also check for errors with ferror().
You can probably also change it like this:
read = fread(buf, sizeof(uint32_t), CHUNK_SIZE, in_fp);
// Error handling
switch (model) {
case MODEL_3390:
for (int i = 0; i < read; i++)
crc = crc ^ buf[i];
break;
case MODEL_X490:
crc32(buf, read * sizeof(uint32_t), &crc);
break;
}
fwrite(buf, sizeof(uint32_t), read, out_fp);
// Error handling
> + for (int i = 0; i < read; i++)
> + crc = crc ^ buf[i];
> + fwrite(buf, sizeof(uint32_t), read, out_fp);
> + break;
> + case MODEL_X490:
> + read = fread(buf, 1, sizeof(uint32_t) * CHUNK_SIZE, in_fp);
> + crc32(buf, read, &crc);
> + fwrite(buf, 1, read, out_fp);
> + break;
> + }
> + }
> + if (model == MODEL_X490)
> + crc = __bswap_32(crc);
> + fwrite(&crc, sizeof(uint32_t), 1, out_fp);
> + fclose(in_fp);
> + fclose(out_fp);
> + printf("Done.\n");
> + return EXIT_SUCCESS;
> +}
More information about the openwrt-devel
mailing list