From a882aed4da83ebb5aaebaaeea14c4f6fb9923f53 Mon Sep 17 00:00:00 2001 From: Mathias Kresin Date: Mon, 26 Jun 2017 19:22:52 +0200 Subject: [PATCH] firmware-utils: fix dgn3500sum compiler warnings The sum variable need to be initialised, otherwise it will points to random stack memory and a bogus image checksum might be calculated. While at it, fix the segfault in case the product region code isn't specified and enable compiler warnings which had revealed all the code issues. Signed-off-by: Mathias Kresin --- Makefile | 2 +- src/dgn3500sum.c | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 2504678..883a7ad 100644 --- a/Makefile +++ b/Makefile @@ -73,7 +73,7 @@ define Host/Compile $(call cc,mkdcs932, -Wall) $(call cc,mkheader_gemtek,-lz) $(call cc,mkrtn56uimg, -lz) - $(call cc,dgn3500sum) + $(call cc,dgn3500sum, -Wall) $(call cc,edimax_fw_header, -Wall) $(call cc,mkmerakifw sha1, -Wall) $(call cc,mkmerakifw-old, -Wall) diff --git a/src/dgn3500sum.c b/src/dgn3500sum.c index 00a0c5f..eb80e6c 100644 --- a/src/dgn3500sum.c +++ b/src/dgn3500sum.c @@ -103,7 +103,7 @@ int main(int argc, char** argv) unsigned long start, i; char *endptr, *buffer, *p; int count; // size of file in bytes - unsigned short sum, sum1; + unsigned short sum = 0, sum1 = 0; char sumbuf[9]; if(argc < 3) { @@ -117,7 +117,7 @@ int main(int argc, char** argv) printf("ERROR: File not writeable!\n"); return 1; } - if(argc = 4) + if(argc == 4) { printf("%s: PID type: %s\n", argv[0], argv[3]); if(strcmp(argv[3], "DE")==0) @@ -147,7 +147,6 @@ int main(int argc, char** argv) start = strtol(argv[2], &endptr, 16); p = buffer+start; - sum1 = 0; for(i = 0; i < count - start; i++) { sum1 += p[i]; -- 2.30.2