diff options
author | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-12 22:27:06 +0000 |
---|---|---|
committer | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-12 22:27:06 +0000 |
commit | 73e20db4130833c5122b3d982a77b82a83928164 (patch) | |
tree | 2f5990981a3dd5ea362d86bc1f16804adfb44ef2 /ppapi/proxy/ppp_class_proxy.cc | |
parent | 620446f7e0fd70a61b19c6c4060656574e251357 (diff) | |
download | chromium_src-73e20db4130833c5122b3d982a77b82a83928164.zip chromium_src-73e20db4130833c5122b3d982a77b82a83928164.tar.gz chromium_src-73e20db4130833c5122b3d982a77b82a83928164.tar.bz2 |
PPAPI: Check permissions for VarDeprecated and PPP_Class
BUG=159690
Review URL: https://codereview.chromium.org/11504003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172672 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy/ppp_class_proxy.cc')
-rw-r--r-- | ppapi/proxy/ppp_class_proxy.cc | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/ppapi/proxy/ppp_class_proxy.cc b/ppapi/proxy/ppp_class_proxy.cc index 8d44a90..5e9a1da8 100644 --- a/ppapi/proxy/ppp_class_proxy.cc +++ b/ppapi/proxy/ppp_class_proxy.cc @@ -36,11 +36,19 @@ struct ObjectProxy { }; ObjectProxy* ToObjectProxy(void* data) { - return reinterpret_cast<ObjectProxy*>(data); + ObjectProxy* obj = reinterpret_cast<ObjectProxy*>(data); + if (!obj || !obj->dispatcher) + return NULL; + if (!obj->dispatcher->permissions().HasPermission(PERMISSION_DEV)) + return NULL; + return obj; } bool HasProperty(void* object, PP_Var name, PP_Var* exception) { ObjectProxy* obj = ToObjectProxy(object); + if (!obj) + return false; + bool result = false; ReceiveSerializedException se(obj->dispatcher, exception); obj->dispatcher->Send(new PpapiMsg_PPPClass_HasProperty( @@ -51,6 +59,9 @@ bool HasProperty(void* object, PP_Var name, PP_Var* exception) { bool HasMethod(void* object, PP_Var name, PP_Var* exception) { ObjectProxy* obj = ToObjectProxy(object); + if (!obj) + return false; + bool result = false; ReceiveSerializedException se(obj->dispatcher, exception); obj->dispatcher->Send(new PpapiMsg_PPPClass_HasMethod( @@ -63,6 +74,9 @@ PP_Var GetProperty(void* object, PP_Var name, PP_Var* exception) { ObjectProxy* obj = ToObjectProxy(object); + if (!obj) + return PP_MakeUndefined(); + ReceiveSerializedException se(obj->dispatcher, exception); ReceiveSerializedVarReturnValue result; obj->dispatcher->Send(new PpapiMsg_PPPClass_GetProperty( @@ -84,6 +98,9 @@ void SetProperty(void* object, PP_Var value, PP_Var* exception) { ObjectProxy* obj = ToObjectProxy(object); + if (!obj) + return; + ReceiveSerializedException se(obj->dispatcher, exception); obj->dispatcher->Send(new PpapiMsg_PPPClass_SetProperty( API_ID_PPP_CLASS, obj->ppp_class, obj->user_data, @@ -95,6 +112,9 @@ void RemoveProperty(void* object, PP_Var name, PP_Var* exception) { ObjectProxy* obj = ToObjectProxy(object); + if (!obj) + return; + ReceiveSerializedException se(obj->dispatcher, exception); obj->dispatcher->Send(new PpapiMsg_PPPClass_RemoveProperty( API_ID_PPP_CLASS, obj->ppp_class, obj->user_data, @@ -107,6 +127,8 @@ PP_Var Call(void* object, PP_Var* argv, PP_Var* exception) { ObjectProxy* obj = ToObjectProxy(object); + if (!obj) + return PP_MakeUndefined(); ReceiveSerializedVarReturnValue result; ReceiveSerializedException se(obj->dispatcher, exception); @@ -126,6 +148,8 @@ PP_Var Construct(void* object, PP_Var* argv, PP_Var* exception) { ObjectProxy* obj = ToObjectProxy(object); + if (!obj) + return PP_MakeUndefined(); ReceiveSerializedVarReturnValue result; ReceiveSerializedException se(obj->dispatcher, exception); @@ -141,6 +165,9 @@ PP_Var Construct(void* object, void Deallocate(void* object) { ObjectProxy* obj = ToObjectProxy(object); + if (!obj) + return; + obj->dispatcher->Send(new PpapiMsg_PPPClass_Deallocate( API_ID_PPP_CLASS, obj->ppp_class, obj->user_data)); delete obj; |