summaryrefslogtreecommitdiff
path: root/net-mgmt/arpalert/files/patch-arpalert.c
blob: e85562af464bafd3ac9ee161300546a33d96aa0f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
--- arpalert.c.orig	2011-11-08 19:36:51 UTC
+++ arpalert.c
@@ -179,6 +179,12 @@ int main(int argc, char **argv){
 		if(cur_timeout.tv_sec != -1){
 		   time_sous(&cur_timeout, &current_t, &timeout);
 
+			if (0 > timeout.tv_usec) {
+				/* avoid EINVAL (paranoid) */
+				timeout.tv_sec -= (timeout.tv_usec / 1000000) + 1;
+				timeout.tv_usec = (timeout.tv_usec % 1000000) + 1000000;
+			}
+
 			// prevent negative timeout
 			if(timeout.tv_sec < 0){
 				timeout.tv_usec = 0;
@@ -188,6 +194,12 @@ int main(int argc, char **argv){
 			timeout.tv_usec += 10000;
 			tmout = &timeout;
 
+			if (1000000 <= timeout.tv_usec) {
+				/* avoid EINVAL */
+				timeout.tv_sec += timeout.tv_usec / 1000000;
+				timeout.tv_usec %= 1000000;
+			}
+
 		// if no timeout
 		} else {
 			tmout = NULL;