Code:  void WorkerProcessLauncher::Core::StopWorker() {
   DCHECK(caller_task_runner_->BelongsToCurrentThread());
 
   if (launch_success_timer_->IsRunning()) {
     launch_success_timer_->Stop();
     launch_backoff_.InformOfRequest(false);
   }
 
  self_ = this;
   ipc_enabled_ = false;
 
   if (process_watcher_.GetWatchedObject() != NULL) {
     launcher_delegate_->KillProcess(CONTROL_C_EXIT);
    return;
  }
 
  DCHECK(process_watcher_.GetWatchedObject() == NULL);
 
   ipc_error_timer_->Stop();
   process_exit_event_.Close();

   if (stopping_) {
     ipc_error_timer_.reset();
     launch_timer_.reset();
    self_ = NULL;
     return;
   }
 
  self_ = NULL;
  DWORD exit_code = launcher_delegate_->GetExitCode();
  if (kMinPermanentErrorExitCode <= exit_code &&
      exit_code <= kMaxPermanentErrorExitCode) {
    worker_delegate_->OnPermanentError();
    return;
   }
  launch_timer_->Start(FROM_HERE, launch_backoff_.GetTimeUntilRelease(),
                       this, &Core::LaunchWorker);
 }

Vulnerability Type: DoS 
CWE ID: CWE-399
Summary: Use-after-free vulnerability in Google Chrome before 24.0.1312.52 allows remote attackers to cause a denial of service or possibly have unspecified other impact via vectors involving PDF fields.
Commit Message: Validate and report peer's PID to WorkerProcessIpcDelegate so it will be able to duplicate handles to and from the worker process.

As a side effect WorkerProcessLauncher::Delegate is now responsible for retrieving the client's PID and deciding whether a launch failed due to a permanent error condition.

BUG=134694


Review URL: https://chromiumcodereview.appspot.com/11143025

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162778 0039d316-1c4b-4281-b951-d872f2087c98