From 8aa53b61f21045db377be6c9236ca0b7227ebce1 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 9 May 2003 00:12:45 +0000 Subject: [PATCH] Better handling of unsupported/unrecognized option names. --- src/sbbs3/js_socket.c | 2 +- src/sbbs3/sockopts.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sbbs3/js_socket.c b/src/sbbs3/js_socket.c index b178a1b867..c366a5c3dc 100644 --- a/src/sbbs3/js_socket.c +++ b/src/sbbs3/js_socket.c @@ -849,7 +849,7 @@ js_getsockopt(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval opt = sockopt(JS_GetStringBytes(JS_ValueToString(cx,argv[0])),&level); len = sizeof(val); - if(getsockopt(p->sock, level, opt, (void*)&val, &len)==0) { + if(opt!=-1 && getsockopt(p->sock, level, opt, (void*)&val, &len)==0) { dbprintf(FALSE, p, "option %d = %d",opt,val); JS_NewNumberValue(cx,val,rval); } else { diff --git a/src/sbbs3/sockopts.c b/src/sbbs3/sockopts.c index 90ca4167be..cdc05edb24 100644 --- a/src/sbbs3/sockopts.c +++ b/src/sbbs3/sockopts.c @@ -76,6 +76,8 @@ int DLLCALL sockopt(char* str, int* level) return(option_names[i].value); } } + if(!isdigit(str[0])) /* unknown option name */ + return(-1); return(strtoul(str,NULL,0)); } @@ -118,7 +120,8 @@ int DLLCALL set_socket_options(scfg_t* cfg, SOCKET sock, char* error) p=name; while(*p && *p>' ') p++; if(*p) *(p++)=0; - option=sockopt(name,&level); + if((option=sockopt(name,&level))==-1) + continue; while(*p && *p<=' ') p++; len=sizeof(value); value=strtol(p,NULL,0); -- GitLab