From d9d957318562dc0ffe25d99e710e8f5ab36debd5 Mon Sep 17 00:00:00 2001 From: Daniele Lacamera Date: Mon, 8 Jul 2019 18:48:11 +0200 Subject: [PATCH] Fixed update server checksum function --- tools/test-update-server/server.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/test-update-server/server.c b/tools/test-update-server/server.c index e0cfaee7..a0a5b7aa 100644 --- a/tools/test-update-server/server.c +++ b/tools/test-update-server/server.c @@ -71,6 +71,7 @@ void alarm_handler(int signo) if (serialfd >= 0 && pktbuf_size > 0) { write(serialfd, pktbuf, pktbuf_size); printf("retransmitting...\n"); + alarm(2); } } @@ -106,7 +107,7 @@ static int recv_ack(union usb_ack *ack) } } -static void check(uint8_t *pkt) +static void check(uint8_t *pkt, int size) { uint16_t *c = (uint16_t *)(pkt + 2); int i; @@ -114,7 +115,7 @@ static void check(uint8_t *pkt) *c = 0; pkt[0] = 0xA5; pkt[1] = 0x5A; - for (i = 0; i < 6; i++) + for (i = 0; i < ((size - 4) >> 1); i++) *c += p[i]; } @@ -224,7 +225,7 @@ int main(int argc, char** argv) break; } pktbuf_size = res + 4 + sizeof(uint32_t); - check(pktbuf); + check(pktbuf, pktbuf_size); write(serialfd, pktbuf, pktbuf_size); len += res;