summaryrefslogtreecommitdiffstats
path: root/bind-9.5-overflow.patch
diff options
context:
space:
mode:
authorAdam Tkac <atkac@fedoraproject.org>2007-07-17 06:09:36 +0000
committerAdam Tkac <atkac@fedoraproject.org>2007-07-17 06:09:36 +0000
commit45c988ee4f52e7ac5e64d35e28291dfe4494e013 (patch)
tree9c4bf97baeb58e6ee4db614a721d950eacaa9775 /bind-9.5-overflow.patch
parent5913ababe45e0be9fa8304fd3b2670f4ee675537 (diff)
handle integer overflow in isc_time_secondsastimet more gracefully
(#247856)
Diffstat (limited to 'bind-9.5-overflow.patch')
-rw-r--r--bind-9.5-overflow.patch24
1 files changed, 24 insertions, 0 deletions
diff --git a/bind-9.5-overflow.patch b/bind-9.5-overflow.patch
new file mode 100644
index 0000000..34b7bed
--- /dev/null
+++ b/bind-9.5-overflow.patch
@@ -0,0 +1,24 @@
+diff -up bind-9.5.0a5/lib/isc/pthreads/condition.c.overflow bind-9.5.0a5/lib/isc/pthreads/condition.c
+--- bind-9.5.0a5/lib/isc/pthreads/condition.c.overflow 2007-07-17 07:53:59.000000000 +0200
++++ bind-9.5.0a5/lib/isc/pthreads/condition.c 2007-07-17 07:55:08.000000000 +0200
+@@ -43,7 +43,7 @@ isc_condition_waituntil(isc_condition_t
+ * POSIX defines a timespec's tv_sec as time_t.
+ */
+ result = isc_time_secondsastimet(t, &ts.tv_sec);
+- if (result != ISC_R_SUCCESS)
++ if (result != ISC_R_RANGE && result != ISC_R_SUCCESS)
+ return (result);
+
+ /*!
+diff -up bind-9.5.0a5/lib/isc/unix/time.c.overflow bind-9.5.0a5/lib/isc/unix/time.c
+--- bind-9.5.0a5/lib/isc/unix/time.c.overflow 2007-02-14 01:27:27.000000000 +0100
++++ bind-9.5.0a5/lib/isc/unix/time.c 2007-07-17 07:53:08.000000000 +0200
+@@ -379,6 +379,9 @@ isc_time_secondsastimet(const isc_time_t
+ * (Let's hope the compiler got the actual test right.)
+ */
+ UNUSED(i);
++
++ /* Means that t->seconds > maximum value in time_t and we have int time_t */
++ seconds = INT_MAX;
+ return (ISC_R_RANGE);
+ }