valid_temp_time: simplify/correct overflow check
the logic for trying to detect the maximum value of time_t was broken; since we target a lower maximum time anyway, just use that for the overflow check
This commit is contained in:
parent
8e239de831
commit
4f46809305
2 changed files with 3 additions and 6 deletions
|
@ -687,8 +687,6 @@ valid_temp_time(const char *p)
|
||||||
time_t result = 0;
|
time_t result = 0;
|
||||||
long current = 0;
|
long current = 0;
|
||||||
|
|
||||||
time_t max_time = (uintmax_t) (~(time_t)0) >> 1;
|
|
||||||
|
|
||||||
while (*p) {
|
while (*p) {
|
||||||
char *endp;
|
char *endp;
|
||||||
int mul;
|
int mul;
|
||||||
|
@ -726,7 +724,7 @@ valid_temp_time(const char *p)
|
||||||
|
|
||||||
current *= mul;
|
current *= mul;
|
||||||
|
|
||||||
if (current > max_time - result)
|
if (current > MAX_TEMP_TIME - result)
|
||||||
return MAX_TEMP_TIME;
|
return MAX_TEMP_TIME;
|
||||||
|
|
||||||
result += current;
|
result += current;
|
||||||
|
|
|
@ -60,15 +60,14 @@ static void valid_temp_time_invalid(void)
|
||||||
|
|
||||||
static void valid_temp_time_overflow(void)
|
static void valid_temp_time_overflow(void)
|
||||||
{
|
{
|
||||||
time_t max_time = (uintmax_t) (~(time_t)0) >> 1;
|
|
||||||
char s[100];
|
char s[100];
|
||||||
time_t t;
|
time_t t;
|
||||||
|
|
||||||
snprintf(s, sizeof s, "%" PRIuMAX "m", (uintmax_t) max_time / 60 + 2);
|
snprintf(s, sizeof s, "%" PRIuMAX "m", UINTMAX_MAX / 60 + 2);
|
||||||
t = valid_temp_time(s);
|
t = valid_temp_time(s);
|
||||||
is_int(52 * WEEK, t, MSG);
|
is_int(52 * WEEK, t, MSG);
|
||||||
|
|
||||||
snprintf(s, sizeof s, "%" PRIuMAX "m%" PRIuMAX "m", (uintmax_t) max_time / 60 - 1, (uintmax_t) max_time / 60 - 1);
|
snprintf(s, sizeof s, "%" PRIuMAX "m%" PRIuMAX "m", UINTMAX_MAX / 60 - 1, UINTMAX_MAX / 60 - 1);
|
||||||
t = valid_temp_time(s);
|
t = valid_temp_time(s);
|
||||||
is_int(52 * WEEK, t, MSG);
|
is_int(52 * WEEK, t, MSG);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue