Fix hcs12 integer overflows
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2327 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
09e97e68e2
commit
7ec7f5bfa3
@ -50,6 +50,10 @@
|
||||
* Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#define SEC_PER_MIN ((time_t)60)
|
||||
#define SEC_PER_HOUR ((time_t)60 * SEC_PER_MIN)
|
||||
#define SEC_PER_DAY ((time_t)24 * SEC_PER_HOUR)
|
||||
|
||||
/****************************************************************************
|
||||
* Private Type Declarations
|
||||
****************************************************************************/
|
||||
@ -310,14 +314,14 @@ struct tm *gmtime_r(const time_t *clock, struct tm *result)
|
||||
|
||||
/* Convert to days, hours, minutes, and seconds since the EPOCH */
|
||||
|
||||
jdn = time / (24*60*60);
|
||||
time -= (24*60*60) * jdn;
|
||||
jdn = time / SEC_PER_DAY;
|
||||
time -= SEC_PER_DAY * jdn;
|
||||
|
||||
hour = time / (60*60);
|
||||
time -= (60*60) * hour;
|
||||
hour = time / SEC_PER_HOUR;
|
||||
time -= SEC_PER_HOUR * hour;
|
||||
|
||||
min = time / 60;
|
||||
time -= 60 * min;
|
||||
min = time / SEC_PER_MIN;
|
||||
time -= SEC_PER_MIN * min;
|
||||
|
||||
sec = time;
|
||||
|
||||
|
@ -189,9 +189,9 @@ size_t strftime(char *s, size_t max, const char *format, const struct tm *tm)
|
||||
if (tm->tm_mon < 12)
|
||||
{
|
||||
str = g_abbrevmonthname[tm->tm_mon];
|
||||
}
|
||||
len = snprintf(dest, chleft, "%s", str);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
/* %B: The full month name according to the current locale. */
|
||||
@ -201,9 +201,9 @@ size_t strftime(char *s, size_t max, const char *format, const struct tm *tm)
|
||||
if (tm->tm_mon < 12)
|
||||
{
|
||||
str = g_monthname[tm->tm_mon];
|
||||
}
|
||||
len = snprintf(dest, chleft, "%s", str);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
/* %y: The year as a decimal number without a century (range 00 to 99). */
|
||||
@ -259,9 +259,9 @@ size_t strftime(char *s, size_t max, const char *format, const struct tm *tm)
|
||||
if (tm->tm_mon < 12)
|
||||
{
|
||||
value = clock_daysbeforemonth(tm->tm_mon, clock_isleapyear(tm->tm_year)) + tm->tm_mday;
|
||||
}
|
||||
len = snprintf(dest, chleft, "%03d", value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
/* %k: The hour (24-hour clock) as a decimal number (range 0 to 23);
|
||||
|
Loading…
Reference in New Issue
Block a user