[dev] [st] [PATCH] Fix crash due to invalid timespec given to pselect

From: Ivan Delalande <colona_AT_ycc.fr>
Date: Fri, 12 Dec 2014 08:39:07 +0100

If blinktimeout is set to a value greater than 1000, pselect will
receive a timeout argument with tv_nsec greater than 1E9 (1 sec), and
fail, making st crash. This patch just ensures that the timespec
structure is correctly filled with a value properly decomposed between
tv_sec and tv_nsec.

Reported by JasonWoof on IRC. Thanks!
---
 st.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/st.c b/st.c
index fc91334..db9a332 100644
--- a/st.c
+++ b/st.c
_AT_@ -3922,6 +3922,9 @@ run(void) {
 							TIMEDIFF(now,
 								lastblink)));
 					}
+					drawtimeout.tv_sec = \
+					    drawtimeout.tv_nsec / 1E9;
+					drawtimeout.tv_nsec %= (long)1E9;
 				} else {
 					tv = NULL;
 				}
-- 
2.1.3
-- 
Ivan "Colona" Delalande
Received on Fri Dec 12 2014 - 08:39:07 CET

This archive was generated by hypermail 2.3.0 : Fri Dec 12 2014 - 08:48:08 CET