Mercurial > spidermonkey-playground
diff spidermonkey-playground.cpp @ 9:fcefc3e5a9df
Added a runtime access check callback.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Fri, 19 Jun 2009 12:50:42 -0700 |
parents | e14f496e6e08 |
children | 16a605ff036c |
line wrap: on
line diff
--- a/spidermonkey-playground.cpp Fri Jun 19 12:22:52 2009 -0700 +++ b/spidermonkey-playground.cpp Fri Jun 19 12:50:42 2009 -0700 @@ -188,6 +188,20 @@ return JSTRAP_CONTINUE; } +static JSBool checkAccess(JSContext *cx, JSObject *obj, jsval id, + JSAccessMode mode, jsval *vp) +{ + if (JSVAL_IS_STRING(id)) { + char *str; + if (!JS_ConvertArguments(cx, 1, &id, "s", &str)) { + printf("checkAccess() string conversion failed!\n"); + return JS_FALSE; + } + printf("checkAccess: %s\n", str); + } + return JS_LookupPropertyById(cx, obj, id, vp); +} + static JSFunctionSpec tcb_global_functions[] = { JS_FS("print", print, 1, 0, 0), JS_FS("wrap", wrap, 2, 0, 0), @@ -196,6 +210,12 @@ JS_FS_END }; +static JSSecurityCallbacks securityCallbacks = { + checkAccess, + NULL, + NULL +}; + int main(int argc, const char *argv[]) { /* JS variables. */ @@ -208,6 +228,8 @@ if (rt == NULL) return 1; + JS_SetRuntimeSecurityCallbacks(rt, &securityCallbacks); + /* Create a context. */ tcb_cx = JS_NewContext(rt, 8192); if (tcb_cx == NULL)