From ccae457db8482e469d4698109c4bec78df29ca6c Mon Sep 17 00:00:00 2001
From: jette <jette@schedmd.com>
Date: Thu, 1 Dec 2011 14:11:43 -0800
Subject: [PATCH] Prevent srun overflow in computing interval between Ctrl-C

---
 src/srun/srun.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/srun/srun.c b/src/srun/srun.c
index 64ddb774331..aa1c85e95ac 100644
--- a/src/srun/srun.c
+++ b/src/srun/srun.c
@@ -1553,11 +1553,14 @@ _task_finish(task_exit_msg_t *msg)
 }
 #endif
 
+/* Return the number of microseconds between tv1 and tv2 with a maximum
+ * a maximum value of 10,000,000 to prevent overflows */
 static long _diff_tv_str(struct timeval *tv1,struct timeval *tv2)
 {
 	long delta_t;
 
-	delta_t  = (tv2->tv_sec  - tv1->tv_sec) * 1000000;
+	delta_t  = MAX((tv2->tv_sec - tv1->tv_sec), 10);
+	delta_t *= 1000000;
 	delta_t +=  tv2->tv_usec - tv1->tv_usec;
 	return delta_t;
 }
-- 
GitLab