Chromium Code Reviews| Index: sandbox/win/src/broker_services.cc |
| diff --git a/sandbox/win/src/broker_services.cc b/sandbox/win/src/broker_services.cc |
| index 54d87c44750e6d4e3b8b7474c90dfe807be036dc..aefd8793515341ab67433394b02837b5314c8647 100644 |
| --- a/sandbox/win/src/broker_services.cc |
| +++ b/sandbox/win/src/broker_services.cc |
| @@ -137,7 +137,7 @@ BrokerServicesBase::~BrokerServicesBase() { |
| JobTrackerList::iterator it; |
| for (it = tracker_list_.begin(); it != tracker_list_.end(); ++it) { |
| JobTracker* tracker = (*it); |
| - FreeResources(tracker); |
| + FreeResources(tracker, SBOX_ALL_OK); |
| delete tracker; |
| } |
| ::CloseHandle(job_thread_); |
| @@ -161,9 +161,9 @@ TargetPolicy* BrokerServicesBase::CreatePolicy() { |
| return new PolicyBase; |
| } |
| -void BrokerServicesBase::FreeResources(JobTracker* tracker) { |
| +void BrokerServicesBase::FreeResources(JobTracker* tracker, UINT exit_code) { |
| if (NULL != tracker->policy) { |
| - BOOL res = ::TerminateJobObject(tracker->job, SBOX_ALL_OK); |
| + BOOL res = ::TerminateJobObject(tracker->job, exit_code); |
| DCHECK(res); |
| // Closing the job causes the target process to be destroyed so this |
| // needs to happen before calling OnJobEmpty(). |
| @@ -216,7 +216,7 @@ DWORD WINAPI BrokerServicesBase::TargetEventsThread(PVOID param) { |
| // to appear out of thin air in this job, it safe to assume that |
| // we can tell the policy to destroy the target object, and for |
| // us to release our reference to the policy object. |
| - FreeResources(tracker); |
| + FreeResources(tracker, SBOX_ALL_OK); |
| break; |
| } |
| @@ -246,6 +246,12 @@ DWORD WINAPI BrokerServicesBase::TargetEventsThread(PVOID param) { |
| break; |
| } |
| + case JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT: { |
| + if(tracker->policy->WillTerminateOnJobMemoryLimit()) |
| + FreeResources(tracker, SBOX_FATAL_MEMORY_EXCEEDED); |
|
cpu_(ooo_6.6-7.5)
2014/06/06 19:44:05
The code seems structured such that FreeResources(
jschuh
2014/06/06 20:13:14
Calling FreeResources here terminates the process
|
| + break; |
| + } |
| + |
| default: { |
| NOTREACHED(); |
| break; |