diff --git a/src/sbbs3/js_bbs.cpp b/src/sbbs3/js_bbs.cpp index c80268a7fbc4fc7df3f7d23942b32c299e2f8920..6d66f2ab380b6fcab3c68b0a477b15c7a98cba60 100644 --- a/src/sbbs3/js_bbs.cpp +++ b/src/sbbs3/js_bbs.cpp @@ -919,19 +919,19 @@ static jsSyncPropertySpec js_bbs_properties[] = { }; /* Utility functions */ -static uint get_subnum(JSContext* cx, sbbs_t* sbbs, jsval val) +static uint get_subnum(JSContext* cx, sbbs_t* sbbs, jsval *argv, int argc, int pos) { uint subnum=INVALID_SUB; - if(JSVAL_IS_STRING(val)) { + if(argc>pos && JSVAL_IS_STRING(argv[pos])) { char * p; - JSSTRING_TO_STRING(cx, JSVAL_TO_STRING(val), p, NULL); + JSSTRING_TO_STRING(cx, JSVAL_TO_STRING(argv[pos]), p, NULL); for(subnum=0;subnum<sbbs->cfg.total_subs;subnum++) if(!stricmp(sbbs->cfg.sub[subnum]->code,p)) break; - } else if(JSVAL_IS_NUMBER(val)) { - if(!JS_ValueToInt32(cx,val,(int32*)&subnum)) + } else if(argc>pos && JSVAL_IS_NUMBER(argv[pos])) { + if(!JS_ValueToInt32(cx,argv[pos],(int32*)&subnum)) return JS_FALSE; } else if(sbbs->usrgrps>0) @@ -1979,7 +1979,7 @@ js_sub_info(JSContext *cx, uintN argc, jsval *arglist) if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); - uint subnum=get_subnum(cx,sbbs,argv[0]); + uint subnum=get_subnum(cx,sbbs,argv,argc,0); rc=JS_SUSPENDREQUEST(cx); if(subnum<sbbs->cfg.total_subs) @@ -2882,7 +2882,7 @@ js_postmsg(JSContext *cx, uintN argc, jsval *arglist) if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); - subnum=get_subnum(cx,sbbs,argv[0]); + subnum=get_subnum(cx,sbbs,argv,argc,0); if(subnum>=sbbs->cfg.total_subs) // invalid sub-board return(JS_TRUE); @@ -3058,7 +3058,7 @@ js_scanposts(JSContext *cx, uintN argc, jsval *arglist) if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); - subnum=get_subnum(cx,sbbs,argv[0]); + subnum=get_subnum(cx,sbbs,argv,argc,0); if(subnum>=sbbs->cfg.total_subs) { // invalid sub-board JS_SET_RVAL(cx, arglist, JSVAL_FALSE); @@ -3102,7 +3102,7 @@ js_listmsgs(JSContext *cx, uintN argc, jsval *arglist) JS_SET_RVAL(cx, arglist, INT_TO_JSVAL(0)); - subnum=get_subnum(cx,sbbs,argv[argn++]); + subnum=get_subnum(cx,sbbs,argv,argc,argn++); if(subnum>=sbbs->cfg.total_subs) // invalid sub-board return(JS_TRUE);