summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/ppp_class_proxy.cc
diff options
context:
space:
mode:
authordmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-12 22:27:06 +0000
committerdmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-12 22:27:06 +0000
commit73e20db4130833c5122b3d982a77b82a83928164 (patch)
tree2f5990981a3dd5ea362d86bc1f16804adfb44ef2 /ppapi/proxy/ppp_class_proxy.cc
parent620446f7e0fd70a61b19c6c4060656574e251357 (diff)
downloadchromium_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.cc29
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;