diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp index e21ddaf9b2da36364a9da629bae103f4bdc0f252..3d43278468cf5541d9797d981d5a71c5bdc3423a 100644 --- a/src/sbbs3/js_bbs.cpp +++ b/src/sbbs3/js_bbs.cpp @@ -1351,24 +1351,25 @@ js_exec_xtrn(JSContext *cx, uintN argc, jsval *arglist) JS_SET_RVAL(cx, arglist, JSVAL_VOID); - if(argc) { - if(JSVAL_IS_STRING(argv[0])) { - JSVALUE_TO_ASTRING(cx,argv[0],code, LEN_CODE+2, NULL); - if(code==NULL) - return(JS_FALSE); + if(!js_argc(cx, argc, 1)) + return JS_FALSE; - for(i=0;i<sbbs->cfg.total_xtrns;i++) - if(!stricmp(sbbs->cfg.xtrn[i]->code,code)) - break; - } else if(JSVAL_IS_NUMBER(argv[0])) { - if(!JS_ValueToECMAUint32(cx,argv[0],&i)) - return JS_FALSE; - } + if(JSVAL_IS_STRING(argv[0])) { + JSVALUE_TO_ASTRING(cx,argv[0],code, LEN_CODE+2, NULL); + if(code==NULL) + return(JS_FALSE); + + for(i=0;i<sbbs->cfg.total_xtrns;i++) + if(!stricmp(sbbs->cfg.xtrn[i]->code,code)) + break; + } else if(JSVAL_IS_NUMBER(argv[0])) { + if(!JS_ValueToECMAUint32(cx,argv[0],&i)) + return JS_FALSE; } if(i>=sbbs->cfg.total_xtrns) { - JS_SET_RVAL(cx, arglist, JSVAL_FALSE); - return(JS_TRUE); + JS_ReportError(cx, "Invalid external program specified"); + return JS_FALSE; } rc=JS_SUSPENDREQUEST(cx);