firmware-utils: fix dgn3500sum compiler warnings
authorMathias Kresin <dev@kresin.me>
Mon, 26 Jun 2017 17:22:52 +0000 (19:22 +0200)
committerMathias Kresin <dev@kresin.me>
Mon, 26 Jun 2017 18:11:16 +0000 (20:11 +0200)
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 <dev@kresin.me>
tools/firmware-utils/Makefile
tools/firmware-utils/src/dgn3500sum.c

index 69cba69a58e6f11b206a98ec54118a16776dc8b4..337d63582efe24f9cd9c68f6dadcb636ed36351a 100644 (file)
@@ -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)
index 00a0c5f8377af0232be01d812820c4f465fda20e..eb80e6c01b0329b955e339beb58f60bd16c720ba 100644 (file)
@@ -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];