diff options
author | 2019-10-24 16:20:56 +0200 | |
---|---|---|
committer | 2019-10-27 21:49:25 +0100 | |
commit | 48123656609fea92a154f08ab619ab5186276432 (patch) | |
tree | 34c399889dbe5271b30b7c840f9fd048875e704f /hurd | |
parent | Add Transliterations for Unicode Misc. Mathematical Symbols-A/B [BZ #23132] (diff) | |
download | glibc-48123656609fea92a154f08ab619ab5186276432.tar.gz glibc-48123656609fea92a154f08ab619ab5186276432.tar.bz2 glibc-48123656609fea92a154f08ab619ab5186276432.zip |
time: Introduce function to check correctness of nanoseconds value
The valid_nanoseconds () static inline function has been introduced to
check if nanoseconds value is in the correct range - greater or equal to
zero and less than 1000000000.
The explicit #include <time.h> has been added to files where it was
missing.
The __syscall_slong_t type for ns has been used to avoid issues on x32.
Tested with:
- scripts/build-many-glibcs.py
- make PARALLELMFLAGS="-j12" && make PARALLELMFLAGS="-j12" xcheck on x86_64
Diffstat (limited to 'hurd')
-rw-r--r-- | hurd/hurdlock.c | 2 | ||||
-rw-r--r-- | hurd/hurdselect.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/hurd/hurdlock.c b/hurd/hurdlock.c index 0787c19661..f8aa293e61 100644 --- a/hurd/hurdlock.c +++ b/hurd/hurdlock.c @@ -71,7 +71,7 @@ __lll_abstimed_lock (void *ptr, { if (atomic_exchange_acq ((int *)ptr, 2) == 0) return 0; - else if (tsp->tv_nsec < 0 || tsp->tv_nsec >= 1000000000) + else if (! valid_nanoseconds (tsp->tv_nsec)) return EINVAL; int mlsec = compute_reltime (tsp, clk); diff --git a/hurd/hurdselect.c b/hurd/hurdselect.c index 333a909d67..79cd20b03e 100644 --- a/hurd/hurdselect.c +++ b/hurd/hurdselect.c @@ -27,6 +27,7 @@ #include <assert.h> #include <stdint.h> #include <limits.h> +#include <time.h> /* All user select types. */ #define SELECT_ALL (SELECT_READ | SELECT_WRITE | SELECT_URG) @@ -89,8 +90,7 @@ _hurd_select (int nfds, { struct timeval now; - if (timeout->tv_sec < 0 || timeout->tv_nsec < 0 || - timeout->tv_nsec >= 1000000000) + if (timeout->tv_sec < 0 || ! valid_nanoseconds (timeout->tv_nsec)) { errno = EINVAL; return -1; |