mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 05:13:46 -07:00
scripting, remove free
This commit is contained in:
parent
8a49cb84a2
commit
0234ca5654
3 changed files with 33 additions and 37 deletions
|
@ -95,7 +95,7 @@ int GetModels(char *Models[], int *count, uint8_t *width){
|
||||||
for (int mode = 0; mode < *count; ++mode) {
|
for (int mode = 0; mode < *count; ++mode) {
|
||||||
mbynum(&model, mode);
|
mbynum(&model, mode);
|
||||||
mcanon(&model);
|
mcanon(&model);
|
||||||
size_t size = (model.name && *model.name) ? strlen(model.name) : 6;
|
size_t size = (model.name && *model.name) ? strlen(model.name) : 7;
|
||||||
char *tmp = calloc(size+1, sizeof(char));
|
char *tmp = calloc(size+1, sizeof(char));
|
||||||
if (tmp==NULL)
|
if (tmp==NULL)
|
||||||
return uerr("[!] out of memory?");
|
return uerr("[!] out of memory?");
|
||||||
|
@ -171,7 +171,7 @@ int GetModels(char *Models[], int *count, uint8_t *width){
|
||||||
/* the selected model solved all arguments */
|
/* the selected model solved all arguments */
|
||||||
mcanon(&pset);
|
mcanon(&pset);
|
||||||
|
|
||||||
size_t size = (pset.name && *pset.name) ? strlen(pset.name) : 6;
|
size_t size = (pset.name && *pset.name) ? strlen(pset.name) : 7;
|
||||||
//PrintAndLog("Size: %d, %s, count: %d",size,pset.name, Cnt);
|
//PrintAndLog("Size: %d, %s, count: %d",size,pset.name, Cnt);
|
||||||
char *tmp = calloc(size+1, sizeof(char));
|
char *tmp = calloc(size+1, sizeof(char));
|
||||||
if (tmp == NULL){
|
if (tmp == NULL){
|
||||||
|
|
|
@ -723,12 +723,12 @@ static const struct malias aliases[] = {
|
||||||
#else /* PRESETS */
|
#else /* PRESETS */
|
||||||
|
|
||||||
static const struct mpreset models[] = {
|
static const struct mpreset models[] = {
|
||||||
{ 0UL, 0, 0, P_BE, 0, 0, 0, NULL }, /* terminating entry */
|
{ 0UL, 0, 0, P_BE, 0, 0, 0, NULL }, /* terminating entry */
|
||||||
};
|
};
|
||||||
# define NPRESETS 0
|
# define NPRESETS 0
|
||||||
|
|
||||||
static const struct malias aliases[] = {
|
static const struct malias aliases[] = {
|
||||||
{NULL, NULL }, /* terminating entry */
|
{NULL, NULL }, /* terminating entry */
|
||||||
};
|
};
|
||||||
# define NALIASES 0
|
# define NALIASES 0
|
||||||
|
|
||||||
|
@ -760,26 +760,26 @@ int mbynam(model_t *dest, const char *key) {
|
||||||
int cmp = 1;
|
int cmp = 1;
|
||||||
char *ukey, *uptr;
|
char *ukey, *uptr;
|
||||||
|
|
||||||
if(!aliases->name)
|
if (!aliases->name)
|
||||||
return(-1);
|
return(-1);
|
||||||
if(!(ukey = malloc((size_t) 1 + strlen(key)))) {
|
if (!(ukey = malloc((size_t) 1 + strlen(key) + 1))) {
|
||||||
uerror("cannot allocate memory for comparison string");
|
uerror("[!] cannot allocate memory for comparison string");
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
uptr = ukey;
|
uptr = ukey;
|
||||||
do
|
do
|
||||||
*uptr++ = toupper(*key);
|
*uptr++ = toupper(*key);
|
||||||
while(*key++);
|
while (*key++);
|
||||||
|
|
||||||
while(left < right && cmp) {
|
while (left < right && cmp) {
|
||||||
middle = (left >> 1) + (right >> 1);
|
middle = (left >> 1) + (right >> 1);
|
||||||
cmp = strcmp(ukey, aliases[middle].name);
|
cmp = strcmp(ukey, aliases[middle].name);
|
||||||
if(cmp < 0) right = middle;
|
if (cmp < 0) right = middle;
|
||||||
else if(cmp > 0) left = middle + 1;
|
else if (cmp > 0) left = middle + 1;
|
||||||
}
|
}
|
||||||
free(ukey);
|
free(ukey);
|
||||||
|
|
||||||
if(cmp)
|
if (cmp)
|
||||||
return(0);
|
return(0);
|
||||||
munpack(dest, aliases[middle].model);
|
munpack(dest, aliases[middle].model);
|
||||||
return(1);
|
return(1);
|
||||||
|
@ -787,7 +787,7 @@ int mbynam(model_t *dest, const char *key) {
|
||||||
|
|
||||||
void mbynum(model_t *dest, int num) {
|
void mbynum(model_t *dest, int num) {
|
||||||
/* Sets parameters in dest according to the model indexed by num. */
|
/* Sets parameters in dest according to the model indexed by num. */
|
||||||
if(num > NPRESETS)
|
if (num > NPRESETS)
|
||||||
num = NPRESETS;
|
num = NPRESETS;
|
||||||
munpack(dest, num+models);
|
munpack(dest, num+models);
|
||||||
}
|
}
|
||||||
|
@ -806,17 +806,17 @@ char * mnames(void) {
|
||||||
char *string, *sptr;
|
char *string, *sptr;
|
||||||
const struct malias *aptr = aliases;
|
const struct malias *aptr = aliases;
|
||||||
|
|
||||||
while(aptr->name) {
|
while (aptr->name) {
|
||||||
if(aptr == aptr->model->alias)
|
if (aptr == aptr->model->alias)
|
||||||
size += strlen(aptr->name) + 1;
|
size += strlen(aptr->name) + 1;
|
||||||
++aptr;
|
++aptr;
|
||||||
}
|
}
|
||||||
if(!size) return(NULL);
|
if (!size) return(NULL);
|
||||||
if((string = malloc(size))) {
|
if ((string = malloc(size))) {
|
||||||
aptr = aliases;
|
aptr = aliases;
|
||||||
sptr = string;
|
sptr = string;
|
||||||
while(aptr->name) {
|
while (aptr->name) {
|
||||||
if(aptr == aptr->model->alias) {
|
if (aptr == aptr->model->alias) {
|
||||||
strcpy(sptr, aptr->name);
|
strcpy(sptr, aptr->name);
|
||||||
sptr += strlen(aptr->name);
|
sptr += strlen(aptr->name);
|
||||||
*sptr++ = '\n';
|
*sptr++ = '\n';
|
||||||
|
@ -836,49 +836,48 @@ void mmatch(model_t *model, int flags) {
|
||||||
size_t left = 0, right = NPRESETS, middle = 0;
|
size_t left = 0, right = NPRESETS, middle = 0;
|
||||||
poly_t poly = PZERO;
|
poly_t poly = PZERO;
|
||||||
int cmp = 1;
|
int cmp = 1;
|
||||||
if(!model) return;
|
if (!model) return;
|
||||||
|
|
||||||
while(left < right && cmp) {
|
while (left < right && cmp) {
|
||||||
middle = (left >> 1) + (right >> 1);
|
middle = (left >> 1) + (right >> 1);
|
||||||
PUNPACK(&poly, models+middle, bspoly);
|
PUNPACK(&poly, models+middle, bspoly);
|
||||||
cmp = psncmp(&model->spoly, &poly);
|
cmp = psncmp(&model->spoly, &poly);
|
||||||
if(!cmp) {
|
if (!cmp) {
|
||||||
PUNPACK(&poly, models+middle, binit);
|
PUNPACK(&poly, models+middle, binit);
|
||||||
cmp = psncmp(&model->init, &poly);
|
cmp = psncmp(&model->init, &poly);
|
||||||
}
|
}
|
||||||
if(!cmp) {
|
if (!cmp) {
|
||||||
if((model->flags & P_REFIN) && (~models[middle].flags & P_REFIN))
|
if ((model->flags & P_REFIN) && (~models[middle].flags & P_REFIN))
|
||||||
cmp = 1;
|
cmp = 1;
|
||||||
else if((~model->flags & P_REFIN) && (models[middle].flags & P_REFIN))
|
else if ((~model->flags & P_REFIN) && (models[middle].flags & P_REFIN))
|
||||||
cmp = -1;
|
cmp = -1;
|
||||||
else if((model->flags & P_REFOUT) && (~models[middle].flags & P_REFOUT))
|
else if ((model->flags & P_REFOUT) && (~models[middle].flags & P_REFOUT))
|
||||||
cmp = 1;
|
cmp = 1;
|
||||||
else if((~model->flags & P_REFOUT) && (models[middle].flags & P_REFOUT))
|
else if ((~model->flags & P_REFOUT) && (models[middle].flags & P_REFOUT))
|
||||||
cmp = -1;
|
cmp = -1;
|
||||||
else {
|
else {
|
||||||
PUNPACK(&poly, models+middle, bxorout);
|
PUNPACK(&poly, models+middle, bxorout);
|
||||||
cmp = psncmp(&model->xorout, &poly);
|
cmp = psncmp(&model->xorout, &poly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(cmp < 0) right = middle;
|
if (cmp < 0) right = middle;
|
||||||
else if(cmp > 0) left = middle + 1;
|
else if (cmp > 0) left = middle + 1;
|
||||||
}
|
}
|
||||||
pfree(&poly);
|
pfree(&poly);
|
||||||
|
|
||||||
if(!cmp) {
|
if (!cmp) {
|
||||||
model->name = models[middle].alias->name;
|
model->name = models[middle].alias->name;
|
||||||
if(flags & M_OVERWR)
|
if (flags & M_OVERWR)
|
||||||
munpack(model, models+middle);
|
munpack(model, models+middle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Private functions */
|
/* Private functions */
|
||||||
|
|
||||||
static void munpack(model_t *dest, const struct mpreset *src) {
|
static void munpack(model_t *dest, const struct mpreset *src) {
|
||||||
/* Copies the parameters of src to dest.
|
/* Copies the parameters of src to dest.
|
||||||
* dest must be an initialised model.
|
* dest must be an initialised model.
|
||||||
*/
|
*/
|
||||||
if(!dest || !src) return;
|
if (!dest || !src) return;
|
||||||
MUNPACK(spoly);
|
MUNPACK(spoly);
|
||||||
MUNPACK(init);
|
MUNPACK(init);
|
||||||
MUNPACK(xorout);
|
MUNPACK(xorout);
|
||||||
|
|
|
@ -466,9 +466,6 @@ static int l_reveng_models(lua_State *L){
|
||||||
|
|
||||||
int ans = GetModels(models, &count, width);
|
int ans = GetModels(models, &count, width);
|
||||||
if (!ans) {
|
if (!ans) {
|
||||||
for (int i =0; i<102; i++) {
|
|
||||||
free(models[i]);
|
|
||||||
}
|
|
||||||
return returnToLuaWithError(L, "Didn't find any models");
|
return returnToLuaWithError(L, "Didn't find any models");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue