[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/2] nanosleep: fix integer overflow problem
From: |
Paul Eggert |
Subject: |
[PATCH 2/2] nanosleep: fix integer overflow problem |
Date: |
Sat, 25 Jun 2011 15:10:15 -0700 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110516 Thunderbird/3.1.10 |
* lib/nanosleep.c (my_usleep): Don't assume signed integer
arithmetic wraps around on overflow.
---
ChangeLog | 4 ++++
lib/nanosleep.c | 5 ++---
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 8e39acf..8466258 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2011-06-25 Paul Eggert <address@hidden>
+ nanosleep: fix integer overflow problem
+ * lib/nanosleep.c (my_usleep): Don't assume signed integer
+ arithmetic wraps around on overflow.
+
nanosleep: simplify carrying
* lib/nanosleep.c (nanosleep): Use the requested tv_nsec for the
first call to the underyling nanosleep, not for the last one.
diff --git a/lib/nanosleep.c b/lib/nanosleep.c
index aae2653..e08c002 100644
--- a/lib/nanosleep.c
+++ b/lib/nanosleep.c
@@ -210,12 +210,11 @@ my_usleep (const struct timespec *ts_delay)
tv_delay.tv_usec = (ts_delay->tv_nsec + 999) / 1000;
if (tv_delay.tv_usec == 1000000)
{
- time_t t1 = tv_delay.tv_sec + 1;
- if (t1 < tv_delay.tv_sec)
+ if (tv_delay.tv_sec == TYPE_MAXIMUM (time_t))
tv_delay.tv_usec = 1000000 - 1; /* close enough */
else
{
- tv_delay.tv_sec = t1;
+ tv_delay.tv_sec++;
tv_delay.tv_usec = 0;
}
}
--
1.7.4.4
- [PATCH 2/2] nanosleep: fix integer overflow problem,
Paul Eggert <=