Index: sandbox/win/src/sandbox_policy_base.cc |
diff --git a/sandbox/win/src/sandbox_policy_base.cc b/sandbox/win/src/sandbox_policy_base.cc |
index 9c3bf0c7a6bab1436d44899d40d1a9de5c65476a..fe0b4e85f76d990c2436c95f691d23f536bcd1d3 100644 |
--- a/sandbox/win/src/sandbox_policy_base.cc |
+++ b/sandbox/win/src/sandbox_policy_base.cc |
@@ -19,6 +19,8 @@ |
#include "sandbox/win/src/handle_policy.h" |
#include "sandbox/win/src/job.h" |
#include "sandbox/win/src/interception.h" |
+#include "sandbox/win/src/lpc_dispatcher.h" |
+#include "sandbox/win/src/lpc_policy.h" |
#include "sandbox/win/src/process_mitigations.h" |
#include "sandbox/win/src/named_pipe_dispatcher.h" |
#include "sandbox/win/src/named_pipe_policy.h" |
@@ -177,6 +179,9 @@ PolicyBase::PolicyBase() |
ipc_targets_[IPC_GDI_GDIDLLINITIALIZE_TAG] = dispatcher; |
ipc_targets_[IPC_GDI_GETSTOCKOBJECT_TAG] = dispatcher; |
ipc_targets_[IPC_USER_REGISTERCLASSW_TAG] = dispatcher; |
+ |
+ dispatcher = new LpcDispatcher(this); |
+ ipc_targets_[IPC_NTCONNECTALPCPORT_TAG] = dispatcher; |
} |
PolicyBase::~PolicyBase() { |
@@ -873,6 +878,14 @@ ResultCode PolicyBase::AddRuleInternal(SubSystem subsystem, |
break; |
} |
+ case SUBSYS_LPC: { |
+ if (!LpcPolicy::GenerateRules(pattern, semantics, policy_maker_)) { |
+ NOTREACHED(); |
+ return SBOX_ERROR_BAD_PARAMS; |
+ } |
+ break; |
+ } |
+ |
default: { return SBOX_ERROR_UNSUPPORTED; } |
} |