mirror of
https://github.com/radareorg/radare2.git
synced 2024-11-29 16:10:52 +00:00
Call to gmtime is potentially dangerous, replace with gmtime_r
This commit is contained in:
parent
a6a04332f8
commit
8885dc4fd1
@ -195,6 +195,7 @@ const char *file_fmttime(ut32 v, int local) {
|
|||||||
char *pp;
|
char *pp;
|
||||||
time_t t = (time_t)v;
|
time_t t = (time_t)v;
|
||||||
struct tm *tm;
|
struct tm *tm;
|
||||||
|
struct tm timestruct;
|
||||||
|
|
||||||
if (local) {
|
if (local) {
|
||||||
pp = ctime(&t);
|
pp = ctime(&t);
|
||||||
@ -216,7 +217,7 @@ const char *file_fmttime(ut32 v, int local) {
|
|||||||
#endif /* HAVE_DAYLIGHT */
|
#endif /* HAVE_DAYLIGHT */
|
||||||
if (daylight)
|
if (daylight)
|
||||||
t += 3600;
|
t += 3600;
|
||||||
tm = gmtime(&t);
|
tm = gmtime_r(&t, ×truct);
|
||||||
if (!tm)
|
if (!tm)
|
||||||
return "*Invalid time*";
|
return "*Invalid time*";
|
||||||
pp = asctime (tm);
|
pp = asctime (tm);
|
||||||
|
@ -33,6 +33,7 @@ R_API int r_print_date_hfs(RPrint *p, const ut8 *buf, int len) {
|
|||||||
char s[256];
|
char s[256];
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
const struct tm* time;
|
const struct tm* time;
|
||||||
|
struct tm timestruct;
|
||||||
|
|
||||||
if (p && len >= sizeof (ut32)) {
|
if (p && len >= sizeof (ut32)) {
|
||||||
t = r_read_ble32 (buf, p->big_endian);
|
t = r_read_ble32 (buf, p->big_endian);
|
||||||
@ -40,7 +41,7 @@ R_API int r_print_date_hfs(RPrint *p, const ut8 *buf, int len) {
|
|||||||
if (p->datefmt[0]) {
|
if (p->datefmt[0]) {
|
||||||
t += p->datezone * (60*60);
|
t += p->datezone * (60*60);
|
||||||
t += hfs_unix_delta;
|
t += hfs_unix_delta;
|
||||||
time = (const struct tm*)gmtime((const time_t*)&t);
|
time = (const struct tm*)gmtime_r((const time_t*)&t, ×truct);
|
||||||
if (time) {
|
if (time) {
|
||||||
ret = strftime (s, sizeof (s), p->datefmt, time);
|
ret = strftime (s, sizeof (s), p->datefmt, time);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@ -60,13 +61,14 @@ R_API int r_print_date_unix(RPrint *p, const ut8 *buf, int len) {
|
|||||||
char s[256];
|
char s[256];
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
const struct tm* time;
|
const struct tm* time;
|
||||||
|
struct tm timestruct;
|
||||||
|
|
||||||
if (p && len >= sizeof (ut32)) {
|
if (p && len >= sizeof (ut32)) {
|
||||||
t = r_read_ble32 (buf, p->big_endian);
|
t = r_read_ble32 (buf, p->big_endian);
|
||||||
// "%d:%m:%Y %H:%M:%S %z",
|
// "%d:%m:%Y %H:%M:%S %z",
|
||||||
if (p->datefmt[0]) {
|
if (p->datefmt[0]) {
|
||||||
t += p->datezone * (60*60);
|
t += p->datezone * (60*60);
|
||||||
time = (const struct tm*)gmtime((const time_t*)&t);
|
time = (const struct tm*)gmtime_r((const time_t*)&t, ×truct);
|
||||||
if (time) {
|
if (time) {
|
||||||
ret = strftime (s, sizeof (s), p->datefmt, time);
|
ret = strftime (s, sizeof (s), p->datefmt, time);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
@ -131,8 +133,9 @@ R_API int r_print_date_w32(RPrint *p, const ut8 *buf, int len) {
|
|||||||
t = (time_t) l; // TODO limit above!
|
t = (time_t) l; // TODO limit above!
|
||||||
// "%d:%m:%Y %H:%M:%S %z",
|
// "%d:%m:%Y %H:%M:%S %z",
|
||||||
if (p->datefmt[0]) {
|
if (p->datefmt[0]) {
|
||||||
|
struct tm time;
|
||||||
ret = strftime(datestr, 256, p->datefmt,
|
ret = strftime(datestr, 256, p->datefmt,
|
||||||
(const struct tm*) gmtime((const time_t*)&t));
|
(const struct tm*) gmtime_r ((const time_t*)&t, &time));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
p->cb_printf("%s\n", datestr);
|
p->cb_printf("%s\n", datestr);
|
||||||
ret = true;
|
ret = true;
|
||||||
|
@ -445,6 +445,7 @@ static int r_print_format_string(const RPrint* p, ut64 seeki, ut64 addr64, ut64
|
|||||||
static void r_print_format_time(const RPrint* p, int endian, int mode,
|
static void r_print_format_time(const RPrint* p, int endian, int mode,
|
||||||
const char* setval, ut64 seeki, ut8* buf, int i, int size) {
|
const char* setval, ut64 seeki, ut8* buf, int i, int size) {
|
||||||
ut64 addr;
|
ut64 addr;
|
||||||
|
struct tm timestruct;
|
||||||
int elem = -1;
|
int elem = -1;
|
||||||
if (size >= ARRAYINDEX_COEF) {
|
if (size >= ARRAYINDEX_COEF) {
|
||||||
elem = size/ARRAYINDEX_COEF-1;
|
elem = size/ARRAYINDEX_COEF-1;
|
||||||
@ -454,7 +455,7 @@ static void r_print_format_time(const RPrint* p, int endian, int mode,
|
|||||||
if (MUSTSET) {
|
if (MUSTSET) {
|
||||||
p->cb_printf ("wv4 %s @ 0x%08"PFMT64x"\n", setval, seeki+((elem>=0)?elem*4:0));
|
p->cb_printf ("wv4 %s @ 0x%08"PFMT64x"\n", setval, seeki+((elem>=0)?elem*4:0));
|
||||||
} else if (MUSTSEE) {
|
} else if (MUSTSEE) {
|
||||||
char *timestr = strdup(asctime (gmtime ((time_t*)&addr)));
|
char *timestr = strdup(asctime (gmtime_r ((time_t*)&addr, ×truct)));
|
||||||
*(timestr+24) = '\0';
|
*(timestr+24) = '\0';
|
||||||
if (!SEEVALUE) {
|
if (!SEEVALUE) {
|
||||||
p->cb_printf ("0x%08" PFMT64x " = ", seeki + ((elem >= 0) ? elem * 4 : 0));
|
p->cb_printf ("0x%08" PFMT64x " = ", seeki + ((elem >= 0) ? elem * 4 : 0));
|
||||||
@ -468,7 +469,7 @@ static void r_print_format_time(const RPrint* p, int endian, int mode,
|
|||||||
while (size--) {
|
while (size--) {
|
||||||
updateAddr (buf + i, size - i, endian, &addr, NULL);
|
updateAddr (buf + i, size - i, endian, &addr, NULL);
|
||||||
free (timestr);
|
free (timestr);
|
||||||
timestr = strdup (asctime (gmtime ((time_t*)&addr)));
|
timestr = strdup (asctime (gmtime_r ((time_t*)&addr, ×truct)));
|
||||||
*(timestr+24) = '\0';
|
*(timestr+24) = '\0';
|
||||||
if (elem == -1 || elem == 0) {
|
if (elem == -1 || elem == 0) {
|
||||||
p->cb_printf ("%s", timestr);
|
p->cb_printf ("%s", timestr);
|
||||||
@ -490,7 +491,7 @@ static void r_print_format_time(const RPrint* p, int endian, int mode,
|
|||||||
}
|
}
|
||||||
free (timestr);
|
free (timestr);
|
||||||
} else if (MUSTSEEJSON) {
|
} else if (MUSTSEEJSON) {
|
||||||
char *timestr = strdup (asctime (gmtime ((time_t*)&addr)));
|
char *timestr = strdup (asctime (gmtime_r ((time_t*)&addr, ×truct)));
|
||||||
*(timestr+24) = '\0';
|
*(timestr+24) = '\0';
|
||||||
if (size==-1) {
|
if (size==-1) {
|
||||||
p->cb_printf ("\"%s\"", timestr);
|
p->cb_printf ("\"%s\"", timestr);
|
||||||
@ -499,7 +500,7 @@ static void r_print_format_time(const RPrint* p, int endian, int mode,
|
|||||||
while (size--) {
|
while (size--) {
|
||||||
updateAddr (buf + i, size - i, endian, &addr, NULL);
|
updateAddr (buf + i, size - i, endian, &addr, NULL);
|
||||||
free (timestr);
|
free (timestr);
|
||||||
timestr = strdup (asctime (gmtime ((time_t*)&addr)));
|
timestr = strdup (asctime (gmtime_r ((time_t*)&addr, ×truct)));
|
||||||
*(timestr+24) = '\0';
|
*(timestr+24) = '\0';
|
||||||
if (elem == -1 || elem == 0) {
|
if (elem == -1 || elem == 0) {
|
||||||
p->cb_printf ("\"%s\"", timestr);
|
p->cb_printf ("\"%s\"", timestr);
|
||||||
|
Loading…
Reference in New Issue
Block a user