mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
loadFile: fix double free
This commit is contained in:
parent
9764381aa4
commit
abddff513e
3 changed files with 6 additions and 12 deletions
|
@ -248,6 +248,7 @@ int CmdFlashMemLoad(const char *Cmd){
|
||||||
res = loadFile(filename, "bin", data, &datalen);
|
res = loadFile(filename, "bin", data, &datalen);
|
||||||
//int res = loadFileEML( filename, "eml", data, &datalen);
|
//int res = loadFileEML( filename, "eml", data, &datalen);
|
||||||
if ( res ) {
|
if ( res ) {
|
||||||
|
free(data);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -607,4 +608,4 @@ int CmdHelp(const char *Cmd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2768,7 +2768,7 @@ int CmdHF14AMfCLoad(const char *Cmd) {
|
||||||
// 64 or 256blocks.
|
// 64 or 256blocks.
|
||||||
if (datalen != 1024 && datalen != 4096) {
|
if (datalen != 1024 && datalen != 4096) {
|
||||||
PrintAndLogEx(WARNING, "File content error. ");
|
PrintAndLogEx(WARNING, "File content error. ");
|
||||||
free(data);
|
free(data);
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -257,6 +257,7 @@ int loadFile(const char *preferredName, const char *suffix, void* data, size_t*
|
||||||
|
|
||||||
if ( preferredName == NULL ) return 1;
|
if ( preferredName == NULL ) return 1;
|
||||||
if ( suffix == NULL ) return 1;
|
if ( suffix == NULL ) return 1;
|
||||||
|
if ( data == NULL ) return 1;
|
||||||
|
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
int size = sizeof(char) * (strlen(preferredName) + strlen(suffix) + 10);
|
int size = sizeof(char) * (strlen(preferredName) + strlen(suffix) + 10);
|
||||||
|
@ -275,7 +276,7 @@ int loadFile(const char *preferredName, const char *suffix, void* data, size_t*
|
||||||
long fsize = ftell(f);
|
long fsize = ftell(f);
|
||||||
fseek(f, 0, SEEK_SET);
|
fseek(f, 0, SEEK_SET);
|
||||||
|
|
||||||
if ( fsize < 0 ) {
|
if ( fsize < 0 ) {
|
||||||
PrintAndLogDevice(FAILED, "error, when getting filesize");
|
PrintAndLogDevice(FAILED, "error, when getting filesize");
|
||||||
retval = 1;
|
retval = 1;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -294,11 +295,7 @@ int loadFile(const char *preferredName, const char *suffix, void* data, size_t*
|
||||||
PrintAndLogDevice(FAILED, "error, bytes read mismatch file size");
|
PrintAndLogDevice(FAILED, "error, bytes read mismatch file size");
|
||||||
free(dump);
|
free(dump);
|
||||||
retval = 3;
|
retval = 3;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
|
||||||
|
|
||||||
if ( (data) == NULL) {
|
|
||||||
(data) = calloc( bytes_read, sizeof(uint8_t));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy( (data), dump, bytes_read);
|
memcpy( (data), dump, bytes_read);
|
||||||
|
@ -310,10 +307,6 @@ int loadFile(const char *preferredName, const char *suffix, void* data, size_t*
|
||||||
|
|
||||||
out:
|
out:
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
if (data)
|
|
||||||
free(data);
|
|
||||||
|
|
||||||
free(fileName);
|
free(fileName);
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue