From 265ef39769167a4af60eb6aa33e1741c6ba616b9 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Fri, 15 Jun 2012 21:26:32 +0000 Subject: [PATCH] Fix some pending argument validation changes I've been sitting on. Nobody should notice a change unless their JS is broken. --- src/sbbs3/js_com.c | 34 ++++++++++++++++++++-------------- src/sbbs3/js_conio.c | 3 ++- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/sbbs3/js_com.c b/src/sbbs3/js_com.c index ea3959bafc..4980ad1e34 100644 --- a/src/sbbs3/js_com.c +++ b/src/sbbs3/js_com.c @@ -182,6 +182,9 @@ js_send(JSContext *cx, uintN argc, jsval *arglist) return(JS_FALSE); } + if(!js_argc(cx, argc, 1)) + return JS_FALSE; + JS_SET_RVAL(cx, arglist, JSVAL_FALSE); JSVALUE_TO_STRING(cx, argv[0], cp, &len); @@ -218,6 +221,9 @@ js_sendfile(JSContext *cx, uintN argc, jsval *arglist) return(JS_FALSE); } + if(!js_argc(cx, argc, 1)) + return JS_FALSE; + JS_SET_RVAL(cx, arglist, JSVAL_FALSE); JSVALUE_TO_STRING(cx, argv[0], fname, NULL); @@ -278,14 +284,14 @@ js_sendbin(JSContext *cx, uintN argc, jsval *arglist) return(JS_FALSE); } - if(argc && argv[0]!=JSVAL_VOID) { - if(!JS_ValueToInt32(cx,argv[0],&val)) - return JS_FALSE; - } - if(argc>1 && argv[1]!=JSVAL_VOID) { - if(!JS_ValueToInt32(cx,argv[1],(int32*)&size)) - return JS_FALSE; - } + if(!js_argc(cx, argc, 1)) + return JS_FALSE; + + if(!JS_ValueToInt32(cx,argv[0],&val)) + return JS_FALSE; + + if(!JS_ValueToInt32(cx,argv[1],(int32*)&size)) + return JS_FALSE; rc=JS_SUSPENDREQUEST(cx); switch(size) { @@ -342,12 +348,12 @@ js_recv(JSContext *cx, uintN argc, jsval *arglist) return(JS_FALSE); } - if(argc && argv[0]!=JSVAL_VOID) { + if(argc) { if(!JS_ValueToInt32(cx,argv[0],&len)) return JS_FALSE; } - if(argc>1 && argv[1]!=JSVAL_VOID) { + if(argc>1) { if(!JS_ValueToInt32(cx,argv[1],&timeout)) return JS_FALSE; } @@ -399,7 +405,7 @@ js_recvline(JSContext *cx, uintN argc, jsval *arglist) return(JS_FALSE); } - if(argc && argv[0]!=JSVAL_VOID) { + if(argc) { if(!JS_ValueToInt32(cx,argv[0],&len)) return JS_FALSE; } @@ -409,7 +415,7 @@ js_recvline(JSContext *cx, uintN argc, jsval *arglist) return(JS_FALSE); } - if(argc>1 && argv[1]!=JSVAL_VOID) { + if(argc>1) { if(!JS_ValueToInt32(cx,argv[1],&timeout)) return JS_FALSE; } @@ -458,12 +464,12 @@ js_recvbin(JSContext *cx, uintN argc, jsval *arglist) return(JS_FALSE); } - if(argc && argv[0]!=JSVAL_VOID) { + if(argc) { if(!JS_ValueToInt32(cx,argv[0],(int32*)&size)) return JS_FALSE; } - if(argc>1 && argv[1]!=JSVAL_VOID) { + if(argc>1) { if(!JS_ValueToInt32(cx,argv[1],&timeout)); return JS_FALSE; } diff --git a/src/sbbs3/js_conio.c b/src/sbbs3/js_conio.c index 405a089278..08419d9095 100644 --- a/src/sbbs3/js_conio.c +++ b/src/sbbs3/js_conio.c @@ -510,7 +510,7 @@ js_conio_gotoxy(JSContext *cx, uintN argc, jsval *arglist) int32 x,y; jsrefcount rc; - if(argc==2 && JSVAL_IS_NUMBER(argv[0]) && JS_ValueToInt32(cx,argv[0],&x) + if(argc >= 2 && JSVAL_IS_NUMBER(argv[0]) && JS_ValueToInt32(cx,argv[0],&x) && JSVAL_IS_NUMBER(argv[1]) && JS_ValueToInt32(cx,argv[1],&y)) { rc=JS_SUSPENDREQUEST(cx); gotoxy(x,y); @@ -518,6 +518,7 @@ js_conio_gotoxy(JSContext *cx, uintN argc, jsval *arglist) JS_RESUMEREQUEST(cx, rc); return(JS_TRUE); } + JS_ReportError(cx, "Insufficient Arguments"); return(JS_FALSE); } -- GitLab