mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-24 15:15:39 -07:00
sanitize fix - lf/hf tune heap overflow
This commit is contained in:
parent
405b93f109
commit
6737f6f3cd
3 changed files with 21 additions and 20 deletions
|
@ -277,7 +277,6 @@ static int CmdGallagherSim(const char *Cmd) {
|
||||||
return resp.status;
|
return resp.status;
|
||||||
|
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
return PM3_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static command_t CommandTable[] = {
|
static command_t CommandTable[] = {
|
||||||
|
|
|
@ -582,12 +582,11 @@ static int CmdTraceSave(const char *Cmd) {
|
||||||
|
|
||||||
if (g_traceLen == 0) {
|
if (g_traceLen == 0) {
|
||||||
download_trace();
|
download_trace();
|
||||||
}
|
|
||||||
|
|
||||||
if (g_traceLen == 0) {
|
if (g_traceLen == 0) {
|
||||||
PrintAndLogEx(WARNING, "trace is empty, nothing to save");
|
PrintAndLogEx(WARNING, "trace is empty, nothing to save");
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
saveFile(filename, ".trace", g_trace, g_traceLen);
|
saveFile(filename, ".trace", g_trace, g_traceLen);
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
|
|
|
@ -642,9 +642,12 @@ void print_progress(size_t count, uint64_t max, barMode_t style) {
|
||||||
prev_cols = cols;
|
prev_cols = cols;
|
||||||
#endif
|
#endif
|
||||||
int width = cols - 35;
|
int width = cols - 35;
|
||||||
|
if (width < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
#define PERCENTAGE(V, T) ((V * width) / T)
|
#define PERCENTAGE(V, T) ((V * width) / T)
|
||||||
// x/8 fractional part of the percentage
|
// x/8 fractional part of the percentage
|
||||||
#define PERCENTAGEFRAC(V, T) ((int)(((((float)V * width) / T) - ((V * width) / T)) * 8))
|
#define PERCENTAGEFRAC(V, T) ((uint8_t)(((((float)V * width) / T) - ((V * width) / T)) * 8))
|
||||||
|
|
||||||
const char *smoothtable[] = {
|
const char *smoothtable[] = {
|
||||||
"\xe2\x80\x80",
|
"\xe2\x80\x80",
|
||||||
|
@ -658,14 +661,15 @@ void print_progress(size_t count, uint64_t max, barMode_t style) {
|
||||||
"\xe2\x96\x88",
|
"\xe2\x96\x88",
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t mode = (session.emoji_mode == EMO_EMOJI);
|
int mode = (session.emoji_mode == EMO_EMOJI);
|
||||||
|
|
||||||
const char *block[] = {"#", "\xe2\x96\x88"};
|
const char *block[] = {"#", "\xe2\x96\x88"};
|
||||||
// use a 3-byte space in emoji mode to ease computations
|
// use a 3-byte space in emoji mode to ease computations
|
||||||
const char *space[] = {" ", "\xe2\x80\x80"};
|
const char *space[] = {" ", "\xe2\x80\x80"};
|
||||||
uint8_t unit = strlen(block[mode]);
|
|
||||||
|
size_t unit = strlen(block[mode]);
|
||||||
// +1 for \0
|
// +1 for \0
|
||||||
char *bar = calloc(unit * width + 1, sizeof(uint8_t));
|
char *bar = (char *)calloc(unit * width + 1, sizeof(uint8_t));
|
||||||
|
|
||||||
uint8_t value = PERCENTAGE(count, max);
|
uint8_t value = PERCENTAGE(count, max);
|
||||||
|
|
||||||
|
@ -687,7 +691,7 @@ void print_progress(size_t count, uint64_t max, barMode_t style) {
|
||||||
}
|
}
|
||||||
// color buffer
|
// color buffer
|
||||||
size_t collen = strlen(bar) + 40;
|
size_t collen = strlen(bar) + 40;
|
||||||
char *cbar = calloc(collen, sizeof(uint8_t));
|
char *cbar = (char *)calloc(collen, sizeof(uint8_t));
|
||||||
|
|
||||||
// Add colors
|
// Add colors
|
||||||
if (session.supports_colors) {
|
if (session.supports_colors) {
|
||||||
|
@ -695,23 +699,23 @@ void print_progress(size_t count, uint64_t max, barMode_t style) {
|
||||||
int p20 = unit * (width * 20 / 100);
|
int p20 = unit * (width * 20 / 100);
|
||||||
snprintf(cbar, collen, _GREEN_("%.*s"), p60, bar);
|
snprintf(cbar, collen, _GREEN_("%.*s"), p60, bar);
|
||||||
snprintf(cbar + strlen(cbar), collen - strlen(cbar), _CYAN_("%.*s"), p20, bar + p60);
|
snprintf(cbar + strlen(cbar), collen - strlen(cbar), _CYAN_("%.*s"), p20, bar + p60);
|
||||||
snprintf(cbar + strlen(cbar), collen - strlen(cbar), _YELLOW_("%.*s"), unit * width - p60 - p20, bar + p60 + p20);
|
snprintf(cbar + strlen(cbar), collen - strlen(cbar), _YELLOW_("%.*s"), (int)(unit * width - p60 - p20), bar + p60 + p20);
|
||||||
} else {
|
} else {
|
||||||
snprintf(cbar, collen, "%s", bar);
|
snprintf(cbar, collen, "%s", bar);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t len = strlen(cbar) + 32;
|
size_t olen = strlen(cbar) + 40;
|
||||||
char *buffer = calloc(len, sizeof(uint8_t));
|
char *out = (char *)calloc(olen, sizeof(uint8_t));
|
||||||
|
|
||||||
switch (style) {
|
switch (style) {
|
||||||
case STYLE_BAR: {
|
case STYLE_BAR: {
|
||||||
sprintf(buffer, "%s", cbar);
|
sprintf(out, "%s", cbar);
|
||||||
printf("\b%c[2K\r[" _YELLOW_("=")"] %s", 27, buffer);
|
printf("\b%c[2K\r[" _YELLOW_("=")"] %s", 27, out);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case STYLE_MIXED: {
|
case STYLE_MIXED: {
|
||||||
sprintf(buffer, "%s [ %zu mV / %2u V / %2u Vmax ] ", cbar, count, (uint32_t)(count / 1000), (uint32_t)(max / 1000));
|
sprintf(out, "%s [ %zu mV / %2u V / %2u Vmax ]", cbar, count, (uint32_t)(count / 1000), (uint32_t)(max / 1000));
|
||||||
printf("\b%c[2K\r[" _YELLOW_("=")"] %s ", 27, buffer);
|
printf("\b%c[2K\r[" _YELLOW_("=")"] %s", 27, out);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case STYLE_VALUE: {
|
case STYLE_VALUE: {
|
||||||
|
@ -719,9 +723,8 @@ void print_progress(size_t count, uint64_t max, barMode_t style) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
free(buffer);
|
free(out);
|
||||||
free(bar);
|
free(bar);
|
||||||
free(cbar);
|
free(cbar);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue