[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