From d417ce7e73cc57ca5bfa91701441351594e021bb Mon Sep 17 00:00:00 2001 From: erikkaashoek Date: Wed, 3 Mar 2021 07:44:18 +0100 Subject: [PATCH] Checksum calculation size robust --- flash.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/flash.c b/flash.c index 598230d..c8ef6d4 100644 --- a/flash.c +++ b/flash.c @@ -136,7 +136,10 @@ caldata_save(uint16_t id) setting.magic = CONFIG_MAGIC; setting.checksum = 0x12345678; setting.checksum = checksum( - &setting, (sizeof (setting)) - sizeof setting.checksum); + &setting, +// (sizeof (setting)) - sizeof setting.checksum + (void *)&setting.checksum - (void *) &setting + ); flash_unlock(); @@ -183,7 +186,10 @@ caldata_recall(uint16_t id) if (src->magic != CONFIG_MAGIC) return -1; // if (SDU1.config->usbp->state == USB_ACTIVE) shell_printf("Checksum %x\r\n", src->checksum); - if (checksum(src, (sizeof (setting)) - sizeof src->checksum) != src->checksum) + if (checksum(src, +// (sizeof (setting)) - sizeof src->checksum + (void *)&setting.checksum - (void *) &setting + ) != src->checksum) return -1; /* active configuration points to save data on flash memory */