]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
Code cleanup:
authorpwpiwi <pwpiwi@users.noreply.github.com>
Thu, 23 Feb 2017 08:40:12 +0000 (09:40 +0100)
committerpwpiwi <pwpiwi@users.noreply.github.com>
Thu, 23 Feb 2017 17:29:03 +0000 (18:29 +0100)
- correctly using stdtypes.h printf and scanf format string macros (PRIx64 et al)
- coverity fixes to client/cmdhfmf.c
- fix linker warning re missing entry point when linking fullimage.elf

armsrc/Makefile
armsrc/hitag2.c
client/cmdhfmf.c
client/cmdlfti.c
tools/mfkey/mfkey32.c
tools/mfkey/mfkey64.c
tools/nonce2key/nonce2key.c

index 0b540b8483aaa1a9ce7ce6e71d49019bd5337e82..04ae7a139c3c2660e28cbc6b7d98d33d2ed53456 100644 (file)
@@ -100,7 +100,7 @@ $(OBJDIR)/fullimage.data.o: $(OBJDIR)/fullimage.data.bin.z
        $(OBJCOPY) -O elf32-littlearm -I binary -B arm --rename-section .data=compressed_data $^ $@
 
 $(OBJDIR)/fullimage.elf: $(OBJDIR)/fullimage.nodata.o $(OBJDIR)/fullimage.data.o
-       $(CC) $(LDFLAGS) -Wl,-T,ldscript,-Map,$(patsubst %.elf,%.map,$@) -o $@ $^
+       $(CC) $(LDFLAGS) -Wl,-T,ldscript,-e,_osimage_entry,-Map,$(patsubst %.elf,%.map,$@) -o $@ $^
 
 tarbin: $(OBJS)
        $(TAR) $(TARFLAGS) ../proxmark3-$(platform)-bin.tar $(OBJS:%=armsrc/%) $(OBJS:%.s19=armsrc/%.elf)
index d79b29fef21785df58d1173ae2603cece3d74269..6a072bf4f93c230ef5a650a32eef2f5965a2ab30 100644 (file)
@@ -340,7 +340,7 @@ static void hitag2_handle_reader_command(byte_t* rx, const size_t rxlen, byte_t*
                                
                                // Unknown command
                                default:
-                                       Dbprintf("Uknown command: %02x %02x",rx[0],rx[1]);
+                                       Dbprintf("Unknown command: %02x %02x",rx[0],rx[1]);
                                        return;
                                break;
                        }
@@ -1450,6 +1450,6 @@ void ReaderHitag(hitag_function htf, hitag_data* htd) {
        AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS;
        FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
        //Dbprintf("frame received: %d",frame_count);
-  //DbpString("All done");
-  cmd_send(CMD_ACK,bSuccessful,0,0,(byte_t*)tag.sectors,48);
+       //DbpString("All done");
+       cmd_send(CMD_ACK,bSuccessful,0,0,(byte_t*)tag.sectors,48);
 }
index 54c5fc87788192c3ad7936e1de36bc818ce17435..3fc3f8f7977fc657ecb8adfac8813d7db37b1be7 100644 (file)
@@ -35,8 +35,10 @@ int CmdHF14AMifare(const char *Cmd)
     SendCommand(&c);\r
        \r
        //flush queue\r
-       while (ukbhit())        getchar();\r
-\r
+       while (ukbhit()) {\r
+               int c = getchar(); (void) c;\r
+       }\r
+       \r
        // wait cycle\r
        while (true) {\r
         printf(".");\r
@@ -303,7 +305,8 @@ int CmdHF14AMfDump(const char *Cmd)
        \r
        // Read keys A from file\r
        for (sectorNo=0; sectorNo<numSectors; sectorNo++) {\r
-               if (fread( keyA[sectorNo], 1, 6, fin ) == 0) {\r
+               size_t bytes_read = fread(keyA[sectorNo], 1, 6, fin);\r
+               if (bytes_read != 6) {\r
                        PrintAndLog("File reading error.");\r
                        fclose(fin);\r
                        return 2;\r
@@ -312,7 +315,8 @@ int CmdHF14AMfDump(const char *Cmd)
        \r
        // Read keys B from file\r
        for (sectorNo=0; sectorNo<numSectors; sectorNo++) {\r
-               if (fread( keyB[sectorNo], 1, 6, fin ) == 0) {\r
+               size_t bytes_read = fread(keyB[sectorNo], 1, 6, fin);\r
+               if (bytes_read != 6) {\r
                        PrintAndLog("File reading error.");\r
                        fclose(fin);\r
                        return 2;\r
@@ -467,16 +471,17 @@ int CmdHF14AMfRestore(const char *Cmd)
        }\r
        \r
        for (sectorNo = 0; sectorNo < numSectors; sectorNo++) {\r
-               if (fread(keyA[sectorNo], 1, 6, fkeys) == 0) {\r
+               size_t bytes_read = fread(keyA[sectorNo], 1, 6, fkeys);\r
+               if (bytes_read != 6) {\r
                        PrintAndLog("File reading error (dumpkeys.bin).");\r
-\r
                        fclose(fkeys);\r
                        return 2;\r
                }\r
        }\r
 \r
        for (sectorNo = 0; sectorNo < numSectors; sectorNo++) {\r
-               if (fread(keyB[sectorNo], 1, 6, fkeys) == 0) {\r
+               size_t bytes_read = fread(keyB[sectorNo], 1, 6, fkeys);\r
+               if (bytes_read != 6) {\r
                        PrintAndLog("File reading error (dumpkeys.bin).");\r
                        fclose(fkeys);\r
                        return 2;\r
@@ -496,7 +501,8 @@ int CmdHF14AMfRestore(const char *Cmd)
                        UsbCommand c = {CMD_MIFARE_WRITEBL, {FirstBlockOfSector(sectorNo) + blockNo, keyType, 0}};\r
                        memcpy(c.d.asBytes, key, 6);\r
                        \r
-                       if (fread(bldata, 1, 16, fdump) == 0) {\r
+                       size_t bytes_read = fread(bldata, 1, 16, fdump);\r
+                       if (bytes_read != 16) {\r
                                PrintAndLog("File reading error (dumpdata.bin).");\r
                                fclose(fdump);\r
                                return 2;\r
@@ -920,6 +926,7 @@ int CmdHF14AMfChk(const char *Cmd)
                                                if (!p) {\r
                                                        PrintAndLog("Cannot allocate memory for defKeys");\r
                                                        free(keyBlock);\r
+                                                       fclose(f);\r
                                                        return 2;\r
                                                }\r
                                                keyBlock = p;\r
@@ -1448,7 +1455,7 @@ int CmdHF14AMfELoad(const char *Cmd)
 \r
        len = param_getstr(Cmd,nameParamNo,filename);\r
        \r
-       if (len > FILE_PATH_SIZE - 4) len = FILE_PATH_SIZE - 4;\r
+       if (len > FILE_PATH_SIZE - 5) len = FILE_PATH_SIZE - 5;\r
 \r
        fnameptr += len;\r
 \r
@@ -1547,7 +1554,7 @@ int CmdHF14AMfESave(const char *Cmd)
 \r
        len = param_getstr(Cmd,nameParamNo,filename);\r
        \r
-       if (len > FILE_PATH_SIZE - 4) len = FILE_PATH_SIZE - 4;\r
+       if (len > FILE_PATH_SIZE - 5) len = FILE_PATH_SIZE - 5;\r
        \r
        // user supplied filename?\r
        if (len < 1) {\r
@@ -1823,7 +1830,7 @@ int CmdHF14AMfCLoad(const char *Cmd)
                return 0;\r
        } else {\r
                len = strlen(Cmd);\r
-               if (len > FILE_PATH_SIZE - 4) len = FILE_PATH_SIZE - 4;\r
+               if (len > FILE_PATH_SIZE - 5) len = FILE_PATH_SIZE - 5;\r
 \r
                memcpy(filename, Cmd, len);\r
                fnameptr += len;\r
@@ -1864,6 +1871,7 @@ int CmdHF14AMfCLoad(const char *Cmd)
 \r
                        if (mfCSetBlock(blockNum, buf8, NULL, 0, flags)) {\r
                                PrintAndLog("Can't set magic card block: %d", blockNum);\r
+                               fclose(f);\r
                                return 3;\r
                        }\r
                        blockNum++;\r
@@ -1992,7 +2000,7 @@ int CmdHF14AMfCSave(const char *Cmd) {
                return 0;\r
        } else {\r
                len = strlen(Cmd);\r
-               if (len > FILE_PATH_SIZE - 4) len = FILE_PATH_SIZE - 4;\r
+               if (len > FILE_PATH_SIZE - 5) len = FILE_PATH_SIZE - 5;\r
        \r
                if (len < 1) {\r
                        // get filename\r
@@ -2112,11 +2120,14 @@ int CmdHF14AMfSniff(const char *Cmd){
                        uint16_t traceLen = resp.arg[1];\r
                        len = resp.arg[2];\r
 \r
-                       if (res == 0) return 0;                                         // we are done\r
+                       if (res == 0) {                                                         // we are done\r
+                               free(buf);\r
+                               return 0;\r
+                       }\r
 \r
                        if (res == 1) {                                                         // there is (more) data to be transferred\r
                                if (pckNum == 0) {                                              // first packet, (re)allocate necessary buffer\r
-                                       if (traceLen > bufsize) {\r
+                                       if (traceLen > bufsize || buf == NULL) {\r
                                                uint8_t *p;\r
                                                if (buf == NULL) {                              // not yet allocated\r
                                                        p = malloc(traceLen);\r
index ba6a36bb67115cb6fae33c0bbf153f6dc11d0fae..5dae9c0ecdd2901206743641124691dbb9d08353 100644 (file)
@@ -274,7 +274,7 @@ int CmdTIWrite(const char *Cmd)
   UsbCommand c = {CMD_WRITE_TI_TYPE};
   int res = 0;
 
-  res = sscanf(Cmd, "%012" PRIx64 " %012" PRIx64 " %012" PRIx64 "", &c.arg[0], &c.arg[1], &c.arg[2]);
+  res = sscanf(Cmd, "%012" SCNx64 " %012" SCNx64 " %012" SCNx64 "", &c.arg[0], &c.arg[1], &c.arg[2]);
   
   if (res == 2) c.arg[2]=0;
   if (res < 2)
index 0e64a3e8e02b1c56f626432630ffc7e58063358e..44fee4a289bfd6369b4d953684313bcb9024b20c 100755 (executable)
@@ -1,9 +1,4 @@
-#define __STDC_FORMAT_MACROS
 #include <inttypes.h>
-#define llx PRIx64
-#define lli PRIi64
-
-// Test-file: test2.c
 #include "crapto1.h"
 #include <stdio.h>
 #include <stdlib.h>
@@ -62,7 +57,7 @@ int main (int argc, char *argv[]) {
                crypto1_word(t, uid ^ nt, 0);
                crypto1_word(t, nr1_enc, 1);
                if (ar1_enc == (crypto1_word(t, 0, 0) ^ prng_successor(nt, 64))) {
-      printf("\nFound Key: [%012"llx"]\n\n",key);
+                       printf("\nFound Key: [%012" PRIx64 "]\n\n",key);
                        break;
                }
        }
index 43e077e5e82155a5d7bc4824ef4c8ebc4f790420..e7eb9dbee30c42a308f4dc2646df4656fb085a78 100755 (executable)
@@ -1,9 +1,4 @@
-#define __STDC_FORMAT_MACROS
 #include <inttypes.h>
-#define llx PRIx64
-#define lli PRIi64
-
-// Test-file: test2.c
 #include "crapto1.h"
 #include <stdio.h>
 #include <string.h>
@@ -103,7 +98,7 @@ int main (int argc, char *argv[]) {
   lfsr_rollback_word(revstate, nr_enc, 1);
   lfsr_rollback_word(revstate, uid ^ nt, 0);
   crypto1_get_lfsr(revstate, &key);
-  printf("\nFound Key: [%012"llx"]\n\n",key);
+  printf("\nFound Key: [%012" PRIx64"]\n\n",key);
   crypto1_destroy(revstate);
 
   return 0;
index 32ea0a68dd454d2a77a335b93c31f2aca9d2ea0e..cc22ce77cb5a726980ae6fc45a6f73177e459014 100644 (file)
@@ -1,7 +1,5 @@
 #include "crapto1.h"
-#define __STDC_FORMAT_MACROS
 #include <inttypes.h>
-#define llx PRIx64
 #include <stdio.h>
 typedef unsigned char byte_t;
 
@@ -20,13 +18,13 @@ int main(const int argc, const char* argv[]) {
   }
   sscanf(argv[1],"%08x",&uid);
   sscanf(argv[2],"%08x",&nt);
-  sscanf(argv[3],"%016"llx,&par_info);
-  sscanf(argv[4],"%016"llx,&ks_info);
+  sscanf(argv[3],"%016" SCNx64,&par_info);
+  sscanf(argv[4],"%016" SCNx64,&ks_info);
   
   // Reset the last three significant bits of the reader nonce
   nr &= 0xffffff1f;
   
-  printf("\nuid(%08x) nt(%08x) par(%016"llx") ks(%016"llx")\n\n",uid,nt,par_info,ks_info);
+  printf("\nuid(%08x) nt(%08x) par(%016" PRIx64 ") ks(%016" PRIx64 ")\n\n",uid,nt,par_info,ks_info);
 
   for (pos=0; pos<8; pos++)
   {
@@ -52,7 +50,7 @@ int main(const int argc, const char* argv[]) {
   state = lfsr_common_prefix(nr,rr,ks3x,par);
   lfsr_rollback_word(state,uid^nt,0);
   crypto1_get_lfsr(state,&key_recovered);
-  printf("\nkey recovered: %012"llx"\n\n",key_recovered);
+  printf("\nkey recovered: %012" PRIx64 "\n\n",key_recovered);
   crypto1_destroy(state);
   
   return 0;
Impressum, Datenschutz