]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhficlass.c
FIX: Coverity, Dereference null return, CID #212329, filehandle could be NULL
[proxmark3-svn] / client / cmdhficlass.c
index d475073572a7fd1c9c1035fa0e575b7f9314e0d9..d018433582c8c27da15b144239881178afd088dd 100644 (file)
@@ -286,10 +286,10 @@ int CmdHFiClassELoad(const char *Cmd) {
 
        if (fsize < 0)  {
                prnlog("Error, when getting filesize");
+               fclose(f);
                return 1;
        }
 
-
        uint8_t *dump = malloc(fsize);
 
        size_t bytes_read = fread(dump, 1, fsize, f);
@@ -374,12 +374,15 @@ int CmdHFiClassDecrypt(const char *Cmd) {
        //Open the tagdump-file
        FILE *f;
        char filename[FILE_PATH_SIZE];
-       if(opt == 'f' && param_getstr(Cmd, 1, filename) > 0)
-       {
-               f = fopen(filename, "rb");
-       }else{
+       if(opt == 'f' && param_getstr(Cmd, 1, filename) > 0) {
+               if ( (f = fopen(filename, "rb")) == NULL) {
+                       PrintAndLog("Could not find file %s", filename);
+                       return 1;
+               }
+               
+       } else {
                return usage_hf_iclass_decrypt();
-       }
+       }       
 
        fseek(f, 0, SEEK_END);
        long fsize = ftell(f);
@@ -1316,8 +1319,13 @@ int CmdHFiClassReadTagFile(const char *Cmd) {
        long fsize = ftell(f);
        fseek(f, 0, SEEK_SET);
 
-       uint8_t *dump = malloc(fsize);
+       if ( fsize < 0 ) {
+               PrintAndLog("Error, when getting filesize");
+               fclose(f);
+               return 1;
+       }
 
+       uint8_t *dump = malloc(fsize);
 
        size_t bytes_read = fread(dump, 1, fsize, f);
        fclose(f);
@@ -1509,6 +1517,12 @@ static int loadKeys(char *filename) {
        long fsize = ftell(f);
        fseek(f, 0, SEEK_SET);
 
+       if ( fsize < 0 ) {
+               PrintAndLog("Error, when getting filesize");
+               fclose(f);
+               return 1;
+       }
+
        uint8_t *dump = malloc(fsize);
 
        size_t bytes_read = fread(dump, 1, fsize, f);
@@ -1601,7 +1615,7 @@ int CmdHFiClassManageKeys(const char *Cmd) {
                case 'n':
                case 'N':
                        keyNbr = param_get8(Cmd, cmdp+1);
-                       if (keyNbr < 0) {
+                       if (keyNbr == 0) {
                                PrintAndLog("Wrong block number");
                                errors = true;
                        }
Impressum, Datenschutz