File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1919
2020#include <stdarg.h>
2121#include <errno.h>
22+ #include <limits.h>
2223
2324#ifndef false
2425#define false 0
@@ -1263,6 +1264,18 @@ static void gettimeofday(struct timeval* tv,char* dummy)
12631264}
12641265#endif
12651266
1267+ static long
1268+ rfbDeferUpdateTimeToUsec (rfbScreenInfoPtr screen )
1269+ {
1270+ if (screen -> deferUpdateTime <= 0 )
1271+ return 0 ;
1272+
1273+ if (screen -> deferUpdateTime > LONG_MAX / 1000L )
1274+ return LONG_MAX ;
1275+
1276+ return (long )screen -> deferUpdateTime * 1000L ;
1277+ }
1278+
12661279rfbBool
12671280rfbProcessEvents (rfbScreenInfoPtr screen ,long usec )
12681281{
@@ -1273,7 +1286,7 @@ rfbProcessEvents(rfbScreenInfoPtr screen,long usec)
12731286 rfbGetClientIteratorWithClosed (rfbScreenInfoPtr rfbScreen );
12741287
12751288 if (usec < 0 )
1276- usec = screen -> deferUpdateTime * 1000 ;
1289+ usec = rfbDeferUpdateTimeToUsec ( screen ) ;
12771290
12781291 rfbCheckFds (screen ,usec );
12791292 rfbHttpCheckFds (screen );
@@ -1353,7 +1366,7 @@ rfbBool rfbIsActive(rfbScreenInfoPtr screenInfo) {
13531366void rfbRunEventLoop (rfbScreenInfoPtr screen , long usec , rfbBool runInBackground )
13541367{
13551368 if (usec < 0 )
1356- usec = screen -> deferUpdateTime * 1000 ;
1369+ usec = rfbDeferUpdateTimeToUsec ( screen ) ;
13571370
13581371 screen -> select_timeout_usec = usec ;
13591372
You can’t perform that action at this time.
0 commit comments