diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c index 4a7c915e5705022025b9fe8f348272fb764dd8de..7d1474c45dce5cbc1b988103f68166e42ac74069 100644 --- a/src/sbbs3/js_msgbase.c +++ b/src/sbbs3/js_msgbase.c @@ -58,6 +58,16 @@ typedef struct static const char* getprivate_failure = "line %d %s %s JS_GetPrivate failed"; +JSBool JS_ValueToUint32(JSContext *cx, jsval v, uint32 *ip) +{ + jsdouble d; + + if(!JS_ValueToNumber(cx, v, &d)) + return JS_FALSE; + *ip = (uint32)d; + return JS_TRUE; +} + /* Destructor */ static void js_finalize_msgbase(JSContext *cx, JSObject *obj) @@ -747,7 +757,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm msg->idx.votes=msg->hdr.votes; } if(JS_GetProperty(cx, hdr, "auxattr", &val) && !JSVAL_NULL_OR_VOID(val)) { - if(!JS_ValueToInt32(cx,val,&i32)) + if(!JS_ValueToUint32(cx,val,&i32)) goto err; msg->hdr.auxattr=i32; }