From e2527c8af30b2e5c78b0cc44dac50a98ab1da314 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Sun, 18 Aug 2019 04:27:47 +0000
Subject: [PATCH] Don't return negative values from user.get_time_left(),
 instead, clamp to INT32_MAX.

---
 src/sbbs3/js_user.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/sbbs3/js_user.c b/src/sbbs3/js_user.c
index 19599a7e82..9b126c4c3d 100644
--- a/src/sbbs3/js_user.c
+++ b/src/sbbs3/js_user.c
@@ -1212,6 +1212,7 @@ js_get_time_left(JSContext *cx, uintN argc, jsval *arglist)
 	int32	start_time=0;
 	jsrefcount	rc;
 	scfg_t*		scfg;
+	ulong		tl;
 
 	scfg=JS_GetRuntimePrivate(JS_GetRuntime(cx));
 
@@ -1228,7 +1229,8 @@ js_get_time_left(JSContext *cx, uintN argc, jsval *arglist)
 	rc=JS_SUSPENDREQUEST(cx);
 	js_getuserdat(scfg,p);
 
-	JS_SET_RVAL(cx, arglist, INT_TO_JSVAL((int32_t)gettimeleft(scfg, p->user, start_time)));
+	tl = gettimeleft(scfg, p->user, start_time);
+	JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(tl > INT32_MAX ? INT32_MAX : (int32) tl));
 	JS_RESUMEREQUEST(cx, rc);
 
 	return JS_TRUE;
-- 
GitLab