From e15dae4da795b55e4c1624ccd731c1af66ec99a6 Mon Sep 17 00:00:00 2001 From: Rob Swindell <rob@synchro.net> Date: Sun, 13 Sep 2020 12:33:57 -0700 Subject: [PATCH] Fixes to printfile and printtail methods Throw an exception if no filename is specified (rather than just abort the script by returning JS_FALSE). The return value is supposed to be a bool, not an int (JS_TRUE != JSVAL_TRUE). --- src/sbbs3/js_console.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/sbbs3/js_console.cpp b/src/sbbs3/js_console.cpp index b3c10c9b4a..efc8894b05 100644 --- a/src/sbbs3/js_console.cpp +++ b/src/sbbs3/js_console.cpp @@ -1395,6 +1395,11 @@ js_printfile(JSContext *cx, uintN argc, jsval *arglist) if((sbbs=(sbbs_t*)js_GetClassPrivate(cx, JS_THIS_OBJECT(cx, arglist), &js_console_class))==NULL) return(JS_FALSE); + if(JSVAL_NULL_OR_VOID(argv[0])) { + JS_ReportError(cx, "No filename specified"); + return JS_FALSE; + } + str = JS_ValueToString(cx, argv[0]); if (!str) return(JS_FALSE); @@ -1424,7 +1429,7 @@ js_printfile(JSContext *cx, uintN argc, jsval *arglist) free(cstr); JS_RESUMEREQUEST(cx, rc); - JS_SET_RVAL(cx, arglist, result ? JS_TRUE : JS_FALSE); + JS_SET_RVAL(cx, arglist, BOOLEAN_TO_JSVAL(result)); return(JS_TRUE); } @@ -1468,8 +1473,10 @@ js_printtail(JSContext *cx, uintN argc, jsval *arglist) } } - if(js_str==NULL) - return(JS_FALSE); + if(js_str==NULL) { + JS_ReportError(cx, "No filename specified"); + return JS_FALSE; + } if(!lines) lines=5; @@ -1482,7 +1489,7 @@ js_printtail(JSContext *cx, uintN argc, jsval *arglist) free(cstr); JS_RESUMEREQUEST(cx, rc); - JS_SET_RVAL(cx, arglist, result ? JS_TRUE : JS_FALSE); + JS_SET_RVAL(cx, arglist, BOOLEAN_TO_JSVAL(result)); return(JS_TRUE); } -- GitLab