Prevented time rollover outside year intervals 1900-2155 and 1-9999
This commit is contained in:
parent
f962d0da66
commit
d297ce3aed
@ -1597,6 +1597,22 @@ void iso_datetime_7(unsigned char *buf, time_t t, int always_gmt)
|
|||||||
gmtime_r(&t, &tm);
|
gmtime_r(&t, &tm);
|
||||||
tzoffset = 0;
|
tzoffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tm.tm_year < 0) {
|
||||||
|
tm.tm_year = 0;
|
||||||
|
tm.tm_mon = 0;
|
||||||
|
tm.tm_mday = 1;
|
||||||
|
tm.tm_hour = 0;
|
||||||
|
tm.tm_min = 0;
|
||||||
|
tm.tm_sec = 0;
|
||||||
|
} else if (tm.tm_year > 255) {
|
||||||
|
tm.tm_year = 255;
|
||||||
|
tm.tm_mon = 11;
|
||||||
|
tm.tm_mday = 31;
|
||||||
|
tm.tm_hour = 23;
|
||||||
|
tm.tm_min = 59;
|
||||||
|
tm.tm_sec = 59;
|
||||||
|
}
|
||||||
buf[0] = tm.tm_year;
|
buf[0] = tm.tm_year;
|
||||||
buf[1] = tm.tm_mon + 1;
|
buf[1] = tm.tm_mon + 1;
|
||||||
buf[2] = tm.tm_mday;
|
buf[2] = tm.tm_mday;
|
||||||
@ -1650,12 +1666,18 @@ void iso_datetime_17(unsigned char *buf, time_t t, int always_gmt)
|
|||||||
tzoffset = 0;
|
tzoffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf((char*)&buf[0], "%04d", tm.tm_year + 1900);
|
if (tm.tm_year <= -1900) {
|
||||||
sprintf((char*)&buf[4], "%02d", tm.tm_mon + 1);
|
strcpy((char *) buf, "00010101000000");
|
||||||
sprintf((char*)&buf[6], "%02d", tm.tm_mday);
|
} else if (tm.tm_year >= 8100) {
|
||||||
sprintf((char*)&buf[8], "%02d", tm.tm_hour);
|
strcpy((char *) buf, "99991231235959");
|
||||||
sprintf((char*)&buf[10], "%02d", tm.tm_min);
|
} else {
|
||||||
sprintf((char*)&buf[12], "%02d", MIN(59, tm.tm_sec));
|
sprintf((char*)&buf[0], "%04d", tm.tm_year + 1900);
|
||||||
|
sprintf((char*)&buf[4], "%02d", tm.tm_mon + 1);
|
||||||
|
sprintf((char*)&buf[6], "%02d", tm.tm_mday);
|
||||||
|
sprintf((char*)&buf[8], "%02d", tm.tm_hour);
|
||||||
|
sprintf((char*)&buf[10], "%02d", tm.tm_min);
|
||||||
|
sprintf((char*)&buf[12], "%02d", MIN(59, tm.tm_sec));
|
||||||
|
}
|
||||||
memcpy(&buf[14], "00", 2);
|
memcpy(&buf[14], "00", 2);
|
||||||
buf[16] = tzoffset;
|
buf[16] = tzoffset;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user