mirror of
https://https.git.savannah.gnu.org/git/gnulib.git
synced 2026-09-01 02:34:55 +00:00
parse-duration: eliminate 68-year duration limit
* lib/parse-duration.c: Include "intprops.h". (TIME_MAX): Rename to MAX_DURATION and define to TYPE_MAXIMUM(time_t). * modules/parse-duration (Depends-on): Add intprops. Reported by Jonas 'Sortie' Termansen.
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
2014-06-11 Bruce Korb <bkorb@gnu.org>
|
||||
Jim Meyering <meyering@fb.com>
|
||||
|
||||
parse-duration: eliminate 68-year duration limit
|
||||
* lib/parse-duration.c: Include "intprops.h".
|
||||
(TIME_MAX): Rename to MAX_DURATION and define to
|
||||
TYPE_MAXIMUM(time_t).
|
||||
* modules/parse-duration (Depends-on): Add intprops.
|
||||
Reported by Jonas 'Sortie' Termansen.
|
||||
|
||||
2014-06-14 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
pthread: don't assume AC_CANONICAL_HOST, port better to Solaris, etc.
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "intprops.h"
|
||||
|
||||
#ifndef NUL
|
||||
#define NUL '\0'
|
||||
#endif
|
||||
@@ -51,7 +53,8 @@ typedef enum {
|
||||
#define SEC_PER_MONTH (SEC_PER_DAY * 30)
|
||||
#define SEC_PER_YEAR (SEC_PER_DAY * 365)
|
||||
|
||||
#define TIME_MAX 0x7FFFFFFF
|
||||
#undef MAX_DURATION
|
||||
#define MAX_DURATION TYPE_MAXIMUM(time_t)
|
||||
|
||||
/* Wrapper around strtoul that does not require a cast. */
|
||||
static unsigned long
|
||||
@@ -80,14 +83,14 @@ scale_n_add (time_t base, time_t val, int scale)
|
||||
return BAD_TIME;
|
||||
}
|
||||
|
||||
if (val > TIME_MAX / scale)
|
||||
if (val > MAX_DURATION / scale)
|
||||
{
|
||||
errno = ERANGE;
|
||||
return BAD_TIME;
|
||||
}
|
||||
|
||||
val *= scale;
|
||||
if (base > TIME_MAX - val)
|
||||
if (base > MAX_DURATION - val)
|
||||
{
|
||||
errno = ERANGE;
|
||||
return BAD_TIME;
|
||||
|
||||
@@ -6,6 +6,7 @@ lib/parse-duration.h
|
||||
lib/parse-duration.c
|
||||
|
||||
Depends-on:
|
||||
intprops
|
||||
|
||||
configure.ac:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user